{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The autoreload extension is already loaded. To reload it, use:\n",
      "  %reload_ext autoreload\n"
     ]
    }
   ],
   "source": [
    "# Load environment variables and set up auto-reload\n",
    "from dotenv import load_dotenv\n",
    "load_dotenv()\n",
    "\n",
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "attachments": {
    "163874fb-f993-4fcd-b5e0-f5f779212a55.webp": {
     "image/webp": "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"
    },
    "3ceab77d-beb4-4189-be07-0634f1f72202.png": {
     "image/png": "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Y29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj44NTg8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MTg2ODwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlVzZXJDb21tZW50PlNjcmVlbnNob3Q8L2V4aWY6VXNlckNvbW1lbnQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoxATOlAAAAHGlET1QAAAACAAAAAAAAAa0AAAAoAAABrQAAAa0AASLncxKGPwAAQABJREFUeAHsnQW8FUUbxl+bEJFUQriCtCKCNCggXdKKIgjSCPLRoMRFpEE6pBFEGiRUUCmRVmmQkG5EQEpRv30Wd+/unt1TN0498/vB2cmd+c85d3fn2fed+/5VgjCQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQAQSuI+CaQTOOodMAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSgEqBgyi8CCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAxBKgYBqxU8+BkwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJUDDld4AESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESCBiCVAwjdip58BJgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQomPI7QAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkELEEKJhG7NRz4CRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhRM+R0gARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARKIWAIUTCN26jlwEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABCqb8DpAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACUQsAQqmETv1HDgJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAFU34HSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEIpYABdOInXoOnARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgIIpvwMkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIRS4CCacROPQdOAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAwZTfARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggYglQME0YqeeAycBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEqBgyu8ACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAxBKgYBqxU8+BkwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJUDDld4AESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESCBiCVAwjdip58BJgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQomPI7QAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkELEEKJhG7NRz4CRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhRM+R0gARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARKIWAIUTCN26jlwEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABCqb8DpAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACUQsAQqmETv1HDgJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAFU34HSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEIpYABdOInXoOnARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgIIpvwMkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk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ARIgARIgARIgARIgARIgARIggWglQME0WmeW4yIBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEvBLgIKpX0SsQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkEK0EKJhG68xyXCRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAn4JUDD1i4gVSIAESIAESIAESIAESIAEYonAnDlzZOLEidK2bVspVapULA2dYyUBEiABEiABEiABEiABEiABEiCBmCRAwTQmp52DJgESIAESIAESIAESIAEScCIwd+5cadGihfz777/y6KOPyrRp05yqsYwESCBMCWDBw/bt26V69eqSL1++MO0lu0UCJEACJEACJEACJEACJBBuBCiYhtuMsD8kQAIkQAIkQAIkQAIkQAIpQmDevHm6WHr16lXJnz+/DB8+nIJLiswEL0oCwRN4/vnnZeXKlfp3+P7775cmTZpIkSJFgm+QZ5IACZAACZAACZAACZAACcQEAQqmMTHNHCQJkAAJkAAJkAAJkAAJkIAvAvPnz9fF0itXrujVZs2aJcWKFfN1Co+RAAmEIYFBgwbJ4MGDjZ5ly5ZNZs6cKVmzZjXKmCEBEiABEiABEiABEiABEiABOwEKpnYi3CcBEiABEiABEiABEiABEogpAhBLW7ZsKf/8848x7l9//VUgtDCRAAlEHgG7aJo2bVrZtm1b5A2EPSYBEiABEiABEiABEiABEkg2AhRMkw01L0QCJEACJEACJEACJEACJBBuBBYsWKBblprF0oEDB0rdunXDravsDwmQQAAEPv/8c+ndu7fljHXr1skdd9xhKeMOCZAACZAACZAACZAACZAACYAABVN+DkiABEiABEiABEiABEiABGKSwMKFC3Wx9O+//zbGD8u0WrVqGfvMkAAJRC6BH374QZo2bWoZwOLFi+Xee++1lHGHBEiABEiABEiABEiABEiABCiY8jNAAiRAAiRAAiRAAiRAAiQQcwQWLVqki6WXL182xj5hwgQpV66csc8MCZBA5BOAe+0XXnjBMpCvvvpKSpYsaSnjDgmQAAmQAAmQAAmQAAmQQGwToGAa2/PP0ZMACZAACZAACZAACZBAzBGA1VmLFi3k0qVLxtjHjx8v5cuXN/aZIQESiB4CTqLpl19+KaVLl46eQXIkJEACJEACJEACJEACJEAC10WAgul14ePJJEACJEACJEACJEACJEACkUQA7jghll68eNHo9pAhQ6RGjRrGPjMkQALRR4CiafTNKUdEAiRAAiRAAiRAAiRAAqEkQME0lDTZFgmQAAmQAAmQAAmQAAmQQNgS+PHHH3Wx9MKFC0Yfe/bsKY0aNTL2mSEBEoheAhRNo3duOTISIAESIAESIAESIAESuF4CFEyvlyDPJwESIAESIAESIAESIAESCHsCS5Ys0cXS8+fPG33t0KGDtGrVythnhgRIIPoJUDSN/jnmCEmABEiABEiABEiABEggGAIUTIOhxnNIgARIgARIgARIgARIgAQihsDSpUt1sfTcuXNGn9u0aSPt2rUz9pkhARKIHQJOoumsWbOkWLFisQOBIyUBEiABEiABEiABEiABErAQoGBqwcEdEiABEiABEiABEiABEiCBaCJAsTSaZpNjIYHQEXASTRcuXCgFChQI3UXYEgmQAAmQAAmQAAmQAAmQQMQQoGAaMVPFjpIACZAACZAACZAACZAACQRCYNmyZbpl6dmzZ43TaFlqoGCGBGKegJNo+vPPP0uOHDling0BkAAJkAAJkAAJkAAJkECsEaBgGmszzvGSAAmQAAmQAAmQAAmQQAwQ+Omnn3SxNCEhwRgtxVIDBTMkQAL/EXASTdevXy+33347GZEACZAACZAACZAACZAACcQQAQqmMTTZHCoJkAAJkAAJkAAJkAAJxAKB5cuX62LpmTNnjOFSLDVQMEMCJGAj4CSa7ty5U1KnTm2ryV0SIAESIAESIAESIAESIIFoJUDBNFpnluMiARIgARIgARIgARIggRgksGLFCl0sPX36tDH6Dh06SKtWrYx9ZkiABEjATsBJNN21a5fceOON9qrcJwESIAESIAESIAESIAESiEICFEyjcFI5JBIgARIgARIgARIgARKIRQKIPdiiRQv566+/jOF369ZNmjZtauwzQwIkQALeCKxbt05q1qxpObxp0ybJkCGDpYw7JEACJEACJEACJEACJEAC0UeAgmn0zSlHRAIkQAIkQAIkQAIkQAIxR+CXX37RxdJTp04ZY+/Tp4/Ur1/f2GeGBEiABPwR2LJli1StWtVS7bfffpMsWbJYyrhDAiRAAiRAAiRAAiRAAiQQXQQomEbXfHI0JEACJEACJEACJEACJBBzBOBKE5alJ0+eNMY+aNAgqVWrlrHPDAmQAAm4JbB7924pX768pfqyZcskd+7cljLukAAJkAAJkAAJkAAJkAAJRA8BCqbRM5ccCQmQAAmQAAmQAAmQAAnEHAGIpS1btpQTJ04YYx81apRUqVLF2GeGBEiABAIlEBcXJ6VLl7acNn/+fClUqJCljDskQAIkQAIkQAIkQAIkQALRQYCCaXTMI0dBAiRAAiRAAiRAAiRAAjFHYOXKlbplqVksnTBhgpQrVy7mWHDAJEACoSdw/Phxefjhhy0Nz5w506PMUoE7JEACJEACJEACJEACJEACEUmAgmlEThs7TQIkQAIkQAIkQAIkQAKxTQAxBeGGF4KGSl9++aWHRZg6xi0JkAAJBEPg3LlzUrhwYcup/FtjwcEdEiABEiABEiABEiABEogKAhRMo2IaOQgSIAESIAESIAESIAESiB0Cq1at0sXS+Ph4Y9AUMAwUzJAACYSYwJUrV+See+6xtMq/ORYc3CEBEiABEiABEiABEiCBiCdAwTTip5ADIAESIAESIAESIAESIIHYIbB69WpdLD127JgxaAoXBgpmSIAEkpBAvnz55PLly8YV+LfHQMEMCZAACZAACZAACZAACUQ8AQqmET+FHAAJkAAJkAAJkAAJkAAJxAaBNWvW6GLp0aNHjQFTsDBQMEMCJJAMBIoWLSoJCQnGlfg3yEDBDAmQAAmQAAmQAAmQAAlENAEKphE9few8CZAACZAACZAACZAACcQGgbVr1+pi6ZEjR4wBU6gwUDBDAiSQjASKFSsmJ06cMK7Iv0UGCmZIgARIgARIgARIgARIIGIJUDCN2Kljx0mABEiABEiABEiABEggNgisW7dOF0sPHz5sDJgChYGCGRIggRQgULp0aYmLizOuzL9JBgpmSIAESIAESIAESIAESCAiCVAwjchpY6dJgARIgARIgARIgARIIDYIQCxt2bKlHDp0yBjw1KlTpVSpUsY+MyRAAiSQEgTKlSsne/bsMS7Nv00GCmZIgARIgARIgARIgARIIOIIUDCNuCljh0mABEiABEiABEiABEggNgisX79etyylWBob881RkkAkEqhUqZJs377d6DotTQ0UzJAACZAACZAACZAACZBARBGgYBpR08XOkgAJkAAJkAAJkAAJkEBsENiwYYM0b97c4vKS1luxMfccJQlEGoHq1avLxo0bjW5TNDVQMEMCJEACJEACJEACJEACEUOAgmnETBU7SgIkQAIkQAIkQAIkQAKxQQDCA8TSgwcPGgOmWGqgYIYESCAMCdSqVUvWrl1r9IyiqYGCGRIgARIgARIgARIgARKICAIUTCNimthJEiABEiABEiABEiABEogNAps2bdLF0gMHDhgDplhqoGCGBEggjAk0aNBAli9fbvSQoqmBghkSIAESIAESIAESIAESCHsCFEzDforYQRIgARIgARIgARIgARKIDQJ//PGHLpbu37/fGDDFUgMFMyRAAhFA4NVXX5WFCxcaPaVoaqBghgRIgARIgARIgARIgATCmgAF07CeHnaOBEiABEiABEiABEiABGKDwObNm6VFixayd+9eY8AUSw0UzJAACUQQgbfeektmzpxp9JiiqYGCGRIgARIgARIgARIgARIIWwIUTMN2atgxEiABEiABEiABEiABEogNAlu2bNHF0j179hgDplhqoGCGBEggAgl07dpVJk6caPScoqmBghkSIAESIAESIAESIAESCEsCFEzDclrYKRIgARIgARIgARIgARKIDQJbt27VxdLdu3cbA6ZYaqBghgRIIIIJ9OvXT0aMGGGMgKKpgYIZEiABEiABEiABEiABEgg7AhRMw25K2CESIAESIAESIAESIAESiA0CFEtjY545ShKIZQJDhw6VgQMHGggomhoomCEBEiABEiABEiABEiCBsCJAwTSspoOdIQESIAESIAESIAESIIHYILBt2zbdsnTXrl3GgGlZaqBghgRIIIoIjBs3Trp3726MiKKpgYIZEiABEiABEiABEiABEggbAhRMw2Yq2BESIAESIAESIAESIAESiA0C27dv18XSnTt3GgOmWGqgYIYESCAKCUybNk06duxojIyiqYGCGRIgARIgARIgARIgARIICwIUTMNiGtgJEiABEiABEiABEiABEogNAn/++aculu7YscMYMMVSAwUzJEACUUxg7ty50rx5c2OEFE0NFMyQAAmQAAmQAAmQAAmQQIoToGCa4lPADpAACZAACZAACZAACZBAbBCASNqiRQuBaKoSxVJFglsSIIFYILB06VJp1KiRMVSKpgYKZkiABEiABEiABEiABEggRQlQME1R/Lw4CZAACZAACZAACZAACcQGAbjfhVgKd7wqUSxVJLglARKIJQKrVq2SunXrGkOmaGqgYIYESIAESIAESIAESIAEUowABdMUQ88LkwAJkAAJkAAJkAAJkEBsENi1a5culm7bts0YMMVSAwUzJEACMUhgy5YtUrVqVWPkFE0NFMyQAAmQAAmQAAmQAAmQQIoQoGCaIth5URIgARIgARIgARIgARKIDQK7d+/WxdKtW7caA6ZYaqBghgRIIIYJ7NmzR8qVK2cQoGhqoGCGBEiABEiABEiABEiABJKdAAXTZEfOC5IACZAACZAACZAACZBAbBCgWBob88xRkgAJBE/gyJEjUrJkSaMBiqYGCmZIgARIgARIgARIgARIIFkJUDBNVty8GAmQAAmQAAmQAAmQAAnEBgFYTiFmKdxOqkTLUkWCWxIgARJIJHD27FkpUqSIUTB+/HgpX768sc8MCZAACZAACZAACZAACZBA0hOgYJr0jHkFEiABEiABEiABEiABEogpAnv37tXF0s2bNxvjplhqoGCGBEiABDwIXLlyRe655x6jfPjw4VKtWjVjnxkSIAESIAESIAESIAESIIGkJUDBNGn5snUSIAESIAESIAESIAESiCkCEEtbtmwpf/zxhzFuiqUGCmZIgARIwCeBXLlyGccHDBgg9erVM/aZIQESIAESIAESIAESIAESSDoCFEyTji1bJgESIAESIAESIAESIIGYIrBv3z5dLN20aZMx7okTJ0rZsmWNfWZIgARIgAR8EzCLpj169JDGjRv7PoFHSYAESIAESIAESIAESIAErpsABdPrRsgGSIAESIAESIAESIAESIAE9u/fr4ulGzduNGCMHTtWnnzySWOfGRIgARIgAXcEzKJpp06dpHnz5u5OZC0SIAESIAESIAESIAESIIGgCFAwDQobTyIBEiABEiABEiABEiABElAEDhw4oIulGzZsUEUyatQoqVKlirHPDAmQAAmQQGAEzKLpm2++Ke3btw+sAdYmARIgARIgARIgARIgARJwTYCCqWtUrEgCJEACJEACJEACJEACJGAnEBcXJy1atJDff//dODRs2DCpXr26sc8MCZAACZBA4AQuXbok+fPnN05s1qyZdO3a1dhnhgRIgARIgARIgARIgARIIHQEKJiGjiVbIgESIAESIAESIAESIIGYIgCxtGXLlrJ+/Xpj3B9//LHUrl3b2GeGBEiABEggeAIJCQlStGhR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IIAAAggggAACCCCAAAIIIIAAAgjYIUBgagcejyKAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAgHMLEJg69/jx9QgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggYIcAgakdeDyKAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALOLUBg6tzjx9cjgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggIAdAgSmduDxKAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIOLcAgalzjx9fjwACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACdggQmNqBx6MIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIODcAgSmzj1+fD0CCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCNghQGBqBx6PIoAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAcwsQmDr3+PH1CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBghwCBqR14PIoAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAs4tQGDq3OPH1yOAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAgB0CBKZ24PEoAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgg4twCBqXOPH1+PAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAJ2CBCY2oHHowgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggg4NwCBKbOPX58PQIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAII2CFAYGoHHo8igAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggIBzCxCYOvf48fUIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIGCHAIGpHXg8igACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACzi1AYOrc48fXI4AAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAHQIEpnbg8SgCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCDi3AIGpc48fX48AAggggAAC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QAABBGwW+H8AAAD//6gYWcUAAEAASURBVOzdd5wcdd0H8G8K6QUSkgAJEEJJQi8CAUQUKSKKBRDERhMLUqQpilRBBUHAB0QERBABQVBQpImNKiA99BJIQgIpJCEJ6c/N6q232bvL7t3e3uzOe18P3sxvfvMr72+evz6vmemyrOEXfgQIECBAgAABAgQIZFpg7bXXLtj/eptuE0eec21Bm5NsCgzpPidO/8ZnY8CAAfHQQw/FddddF9ttt12rGC+++GLssssuse2228Zvf/vbVvu25eKkSZPi8ccfj+effz53e/Lv95hjjokddtghLrvssrjrrrviyCOPjMGDB0fXrl1j3LhxMWbMmNhwww1jyJAhub2svPLKMXDgwGanf+211yL57/XXX48XXnghfv/738ecOXNiiy22iHPPPTfWXXfdovvGjx8fe+yxR669JaPzzjsvLrjggjj88MPjhBNOKBqjpYaZM2fGPvvsE8OHD4+rrrqqpW5x5ZVXximnnBITJkzI97nyrqfjlEP3jE223yXee3d2HOH/r/M2WTr409Xnxx2//mnBlo866qjc/98UNDohQIAAAQIECBAgkFGBLgLTjFbetgkQIECAAAECBAg0ERCYNsFwWCDQo1uXuPFHX4mHHnwwfvGLX5QUlu61114xb968OO200+LAAw8sGK+jTs4444xcWPqRj3wkNtpoo1ywOXTo0HjrrbdanXLYsGGR9Et+Sd+pU6cW9O/Xr19stdVWMXr06Dj66KOjb9++BdcbTyZOnJgLbJPzlgLTJHT91Kc+FUngm4SwyZil/A477LC444474qKLLoqPfexjLd7yxhtvxPvf//64+OKLY88998z1O/YHv4g//frCmJ+EpWdfE+tvNq7F+12oXwGBaf3W1s4IECBAgAABAgQqIyAwrYyjUQgQIECAAAECBAjUtIDAtKbL16GL//WPT4h/3fW7KOVptOeeey5233333Hr69+8fd999d6y22modur7GwWfNmhWf+cxnIllD8jd5sjUJGpN1P/roozFt2rSYPn16vPvuu4235P726dMnkv+SYDQJQxv/GzRoUCT/Jfso9ffhD384XnrppdzToMmTqM39fvOb38SJJ54Y++23X5x99tnNdSlou/zyy+P000/PhbY33XRTwbXlT5K9JWHxF77whfj+97+fu7zPId+Mh+++KT74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1n1cJUCAAAECBAgQIJAJAYFpJsrcpk1uuUa3mPjMg3H55ZfnnjKdNOk/AV4SeCZPjH75y1/Ojdva06XJK2m//e1vRxKuPvbYY7n+J5xwQhx++OFtWlNLN91+++1xxx13xE033ZTvssMOO8RBBx0Uu+66a76t8aDxdblPPfVUY1Mu0N1xxx3js5/9bEXD0+TJ0v322y/eeOONXNicOA4aNChGrb9hfPLAr0WX/iOi/5D/vX43v6DlDl584sHlWv53mgSoyZOmfgSWFxCYLi/inAABAgQIECBAgEChgMC00MMZAQIECBAgQIAAgUwKCEwzWfaSNj2wV5f44Mhu+b5J8Je8hjd5VeyyZctyT2Umr+Ft7enSL33pS5G8Evfkk0/OB5dXXXVV7LTTTvlxyz047bTT8t/xTO6dOnVqvPbaa/lhNtlkk/jc5z6XCz7zjf89ePTRR+OUU06JxqA0CX+T1+O++uqr8frrr+f+69evXxxyyCFxzDHHLH97m86PPfbYuPHGG3P3JvN989Qfx4I+w2PWew3v1vUj0MECAtMOBjY8AQIECBAgQIBAzQsITGu+hDZAgAABAgQIECBAoP0CAtP2G9bzCKv27hKbr94t+vb4zy6bhqZJSxKEJuFic7+LLroo9x3R5HW+yROdF1xwQSTf67z55pub615SW/Kk5v777x/Jq3cvvPDC/D1f/OIXY80114xRo0bFLrvskm9venD//ffH17/+9Zg5c2Z84hOfyI2z/fbbN+0SDz/8cOyzzz65tqOOOqrdoWnTsPSYb58cm+1xoKC0QNxJRwsITDta2PgECBAgQIAAAQK1LiAwrfUKWj8BAgQIECBAgACBCggITCuAWOdD9O3RJTYZ1jWG9e2S22kSmiZPSs6bNy+OOOKIOO6444oE5syZExtvvHGMGzcurr/++twraR988ME49dRTc6/JLbqhhIbkydTf/OY3kbx+t/HfbTJ+8nrg5l6723TIJCxNXrWb/M4///z41Kc+1fRywXHyXdOtttoq13bJJZfEHnvsUXC91JPkO63HH398rvu3Tz8n1tj206Xeqh+BigkITCtGaSACBAgQIECAAIE6FRCY1mlhbYsAAQIECBAgQIBAOQKNwVPjPettuk0cec61jaf+EsgJdOnSJTYd2jVGrtIlmoaPH//4x+P//u//ipSee+652H333fOBafLa2z59+sTdd98dq666alH/FTU0zjlkyJB4++23c4FpEpQmT5au6PfMM8/ERz/60Vy35HW+Bx544IpuiT/96U+5p1GTjsm3UceMGbPCe5p2GD9+fC4kTsJlYWlTGcfVFhCYVlvcfAQIECBAgAABArUmIDCttYpZLwECBAgQIECAAIEOEBCYdgBqHQ85YkDXGD6wS/z6kvPjpxeen9tp8j3QAQMGFOz6ySefjCRMTZ4ATb4Fmnz7NHnV7bnnnlvQr9STo48+Ov8q38MPPzz3GuDBgwev8PZZs2blnoadP39+7knY5InYUn/Jk7EnnHBCrvvTTz8d/fv3L/XW3FOpSWh66pnnxKD3ebK0ZDgdKy4gMK04qQEJECBAgAABAgTqTEBgWmcFtR0CBAgQIECAAAECbREQmLZFzT3z5syOi7/9uXj9pfG575QmT5M2/U2aNCmS74P26NEjF1SeddZZ0dbX2951113xq1/9Kvdt0u222y5Gjx7ddKpWj7/yla/kXuGbdEq+Tzp06NBW+y9/8Yc//GH87Gc/yzU/9thjMWjQoOW7FJ0nT7FeccUVcdpZ58SQrfeOxUuXFfXRQKBaAgLTakmbhwABAgQIECBAoFYFBKa1WjnrJkCAAAECBAgQIFBBAYFpBTEzNlQSml54wmdjzrTJ8YtLL40kzGz8LVq0KNZbb73c6W677RbJ05Z/+9vfYqWVVmrs0uF/Fy5cmPuO6oIFC/KvBm7LpIccckjuVcJjx46N/fffP5K/yfdZ+/btWzTcAw88kOuz9957x6ePOiemzxeWFiFpqKqAwLSq3CYjQIAAAQIECBCoQQGBaQ0WzZIJECBAgAABAgQIVFpAYFpp0WyNN33KxDjtSzvlNn3KKafEwQcfnAdIgtLnn38+91TnHnvsEaeffnr+WjUOGr97msx11FFH5V4N3NZ5r7322rjzzjvjnnvuyQ+RvKI3eeJ0lVVWiZ49e8bixYtz+x0+fHj89Jrb47npS/N9HRDoLAGBaWfJm5cAAQIECBAgQKBWBASmtVIp6yRAgAABAgQIECDQgQIC0w7EzcjQD915Y1xz7rdyu912223jsssuy33T9Dvf+U5cc801ufabbropttpqq6qLbLbZZvHOO+/EddddV/AEbFsXkjy1Onny5HjzzTdj+vTpMW3atNzfpO2vf/1rzJw5M3b64Idj72//PJYu83RpW53dVzkBgWnlLI1EgAABAgQIECBQnwIC0/qsq10RIECAAAECBAgQKEtAYFoWl84tCCx9+Z4458xTI/l26YgRI+IXv/hFPPvss7mnOseNGxfXX399C3d2bHPyZOnvf//7+O53vxuHHXZYuyebNWtWJN8yffLJJ+Pxxx+Pf//737mQtHfv3jF//vw4+uijY9u9j4y35wlL241tgIoICEwrwmgQAgQIECBAgACBOhYQmNZxcW2NAAECBAgQIECAQKkCAtNSpfRrTWDdlbvGxqt1jcsvvzxuuOGGXFjap0+fWLJkSSSvqD3xxBNz3/5cc801Wxum4tf+9a9/xec+97nYdddd4+KLLy57/OSVwg8//HA8+uijuaD01VdfzY3Rr1+/3BOzW2yxRQwePDi+973v5V77u9eXjo5n3vYq3rKh3dBhAgLTDqM1MAECBAgQIECAQJ0ICEzrpJC2QYAAAQIECBAgQKA9AgLT9ui5t6nA6EFdY/jALtG/Z5f47W9/m/tm6Zw5c3KBadKv8enT5NumyX/bbbdd09s77Dh52vX73/9+/P3vf4+RI0e2OM+MGTPiueeeyz01+sgjj0TyX7L+xl8Sju6www7xvve9L/df8g3T2bNn59qSUPja3/857n99aSxe6unSRjN/O19AYNr5NbACAgQIECBAgACBdAsITNNdH6sjQIAAAQIECBAgUBUBgWlVmDM5SZfZk+Lai86I+/92VyTfNt1oo41yDm+88Ubcddddue+cJq/rTYLTsWPH5q4PGDAgF0I+88wzubAy+Tu94fW2z786Md55640Y0fCE6toNr/zdecdx8YH3b1+S6+LFi2OPPfbIhaVJeDpv3rx48cUX44UXXsj9lzxFmgSlU6dOLRhv1KhRuWB0++23j+S/YcOGFVxPTpJxk/0kAfHs/mNi6lxPlxYhaehUAYFpp/KbnAABAgQIECBAoAYEBKY1UCRLJECAAAECBAgQINDRAgLTjhY2/puvPhuvPHxnPHbvXfHC88/mvnGaBKPjx49vF84R3zo5jvv6ISWNcckll8QPfvCDSJ4STb5B2twvubbVVlvFNttskwtKk1fttvY79thj48Ybb4xzzjknttpln3j6LWFpa16udY6AwLRz3M1KgAABAgQIECBQOwIC09qplZUSIECAAAECBAgQ6DABgWmH0Rq4GYH+y+bE3Mnj48UnHspdTULT5LW2TX/JU6fJb8utxzWEkMti8Fpjo0//Abm26VMmxktPPhg3XfL9mD93Tpx95R/jI9tvHAMbXgPc2u+tt96Kj3/84zFlypRct+Tp0Y033jg22WST3H9JSNqtW7fWhii4dt5558UFF1wQBx98cCTBbfIq3iVexVtg5CQdAgLTdNTBKggQIECAAAECBNIrIDBNb22sjAABAgQIECBAgEDVBASmVaM2UROBgb26xJoDusSIAV2jZ/cmF5ocPtfwxObzM5p/anPenNlx4QmfjS5dusTR5/wmthy5cqw3uGuTu4sPTzzxxFiyZEkcccQRsWbDq33b+ktev3v88cfnXiN8++23N4SlS+LthtcG+xFIo4DANI1VsSYCBAgQIECAAIE0CQhM01QNayFAgAABAgQIECDQSQIC006CN21OoGe3htC0f5dYbWCXGNijS6z034c8Z763LP41cWm8t7jlIPLx++6KK07/agwaNiK+fMolsdkmG8boIV1j1d4tP216zz33xM4779xm/aZhaXI8ZUG/eHZ686FumydxI4EKCghMK4hpKAIECBAgQIAAgboUEJjWZVltigABAgQIECBAgEB5AgLT8rz07liB3is1hKYND4rOXtByUNp0Bad84QPx3tyGV/o2PGl65Nm/ieHrjo3h/bvGmit3iWF9Ww5Om45R6vHyYenClfrnXsW7bFlpay11Hv0IVFJAYFpJTWMRIECAAAECBAjUo4DAtB6rak8ECBAgQIAAAQIEyhQQmJYJpnuqBJIw6OkH7o6Nt9sl/vH7X8VOnzowPviJg3LfPB3c8KTpiJW7xloNr/7t2o7s9IEHHogbb7wx91/yzdJTTjklZ3DvhCUxfb6wNFX/ICymSEBgWkSigQABAgQIECBAgECBgMC0gMMJAQIECBAgQIAAgWwKCEyzWfd62XXyLdPTvvSB2GT73RpC013j5kvOiPfmzYltd9snNh734RgxasMYMnhg7rW/aw7sGn17lLbz8ePHx4MPPhg33HBDJMfDhw+Pc889N7bbbrvcAI9OXhoTZ3sVb2maenWmgMC0M/XNTYAAAQIECBAgUAsCAtNaqJI1EiBAgAABAgQIEOhgAYFpBwMbvsMFJr38bFx4/Gdj0GojGoLTXWPyK8/Gi088FPPfbXhVb8Ovd78BMXzUmNhg83Gx3jprxUajhsfA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ECBAgAABAgQIZC8gMM3eTAsCBAgQIECAAAECBHoJNDU1xaOPPhr33XdfbN++vdfTgW+Tb52OGVffVbHxjFkxcdqM7kaTp86MxjNO3Xc/cEGAAIEiF1i3amVMqauIPUc749iRw7F9w8vdM1734jPd19lcJL9Vesstt3irNBs0dQkQIECAAAECBAgMICAwHQDIYwIECBAgQIAAAQIEshNIvnF6//33x0DfN82uV7UJECBQvgLJ75R+8IMfjJtvvjlmzZpVvhBWToAAAQIECBAgQCBPAgLTPMHqlgABAgQIECBAgEC5C6xYsSLuvvvuWLlyZblTWD8BAgSGJJD8Rum1117b9Uapo3eHRKgRAQIECBAgQIAAgUEJCEwHxaQSAQIECBAgQIAAAQJDFUge15sMT59++ulYvXq1AHWokNoRIFDyAsmAdNmyZXHeeefFZZdd5tjdkt9xCyRAgAABAgQIECgWAYFpseyEeRAgQIAAAQIECBAoI4FkgJr8v1deeaUrSG1ubi6j1VsqAQIE3hRYtGhRVzCaDEkXL17suF1/GAQIECBAgAABAgROk4DA9DTBG5YAAQIECBAgQIAAgXSBrVu3xrZt27ofJENVPwIECIxkgeTboj2P002+OepHgAABAgQIECBAgEBxCQhMi2s/zIYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQIKCEwLiG0oAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSKS0BgWlz7YTYECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBRQQGBaQGxDESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQXAIC0+LaD7MhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCAAgLTAmIbigABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB4hIQmBbXfpgNAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIFFBCYFhDbUAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIFJeAwLS49sNsCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAooIDAtIDYhiJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoLgEBKbFtR9mQ4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAAQUEpgXENhQBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAsUlIDAtrv0wGwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECiggMC0gtqEIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECguAYFpce2H2RAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUEABgWkBsQ1FgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBxCQhMi2s/zIYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQIKCEwLiG0oAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSKS0BgWlz7YTYECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBRQQGBaQGxDESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQXAIC0+LaD7MhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCAAgLTAmIbigABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB4hIQmBbXfpgNAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIFFBCYFhDbUAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIFJeAwLS49sNsCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAooIDAtIDYhiJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoLgEBKbFtR9mQ4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAAQUEpgXENhQBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAsUlIDAtrv0wGwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECiggMC0gtqEIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECguAYFpce2H2RAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUEABgWkBsQ1FgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBxCQhMi2s/zIYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQIKCEwLiG0oAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSKS0BgWlz7YTYECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBRQQGBaQGxDESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQXAIC0+LaD7MhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCAAgLTAmIbigABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB4hIQmBbXfpgNAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIFFBCYFhDbUAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIFJeAwLS49sNsCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAooIDAtIDYhiJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoLgEBKbFtR9mQ4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAAQUEpgXENhQBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAsUlIDAtrv0wGwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECiggMC0gtqEIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECguAYFpce2H2RAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUEABgWkBsQ1FgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBxCQhMi2s/zIYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQIKCEwLiG0oAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSKS0BgWlz7YTYECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBRQQGBaQGxDESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQXAIC0+LaD7MhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCAAgLTAmIbigABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB4hIQmBbXfpgNAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIFFBCYFhDbUAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIFJeAwLS49sNsCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAooIDAtIDYhiJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoLgEBKbFtR9mQ4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAAQUEpgXENhQBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAsUlIDAtrv0wGwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECiggMC0gtqEIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECguAYFpce2H2RAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUEABgWkBsQ1FgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBxCQhMi2s/zIYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQIKCEwLiG0oAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSKS0BgWlz7YTYECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBRQQGBaQGxDESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQXAIC0+LaD7MhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCAAgLTAmIbigABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB4hIQmBbXfpgNAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIFFBCYFhDbUAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIFJeAwLS49sNsCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAooIDAtIDYhiJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoLgEBKbFtR9mQ4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAAQUEpgXENhQBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAsUlIDAtrv0wGwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECiggMC0gtqEIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECguAYFpce2H2RAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUEABgWkBsQ1FgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBxCQhMi2s/zIYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQIKCEwLiG0oAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSKS0BgWlz7YTYECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBRQQGBaQGxDESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQXAL/PxA9aGLxOi04AAAAAElFTkSuQmCC"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Research Agent \n",
    "\n",
    "*The goal of research is to gather the context requested by the research brief.*\n",
    "\n",
    "Here is our overall research flow:\n",
    "\n",
    "![image (2).webp](attachment:163874fb-f993-4fcd-b5e0-f5f779212a55.webp)\n",
    "\n",
    "Research is an open‑ended task. The best strategy to answer a user request can't be easily known in advance. \n",
    "\n",
    "Requests can require different research strategies and varying levels of search depth. Consider this request:\n",
    "\n",
    "> *\"Compare these two products\"*\n",
    "\n",
    "Comparisons typically benefit from search on each product, followed by a synthesis step to compare them. Now, consider this one:\n",
    "\n",
    "> *\"Give me the top candidates for my job posting\"*\n",
    "\n",
    "Listing and ranking requests typically require open-ended search, followed by a synthesis and ranking.\n",
    " \n",
    "[Agents](https://langchain-ai.github.io/langgraph/tutorials/workflows/#agent) are well suited to research because they can flexibly apply different strategies, using intermediate results to guide their exploration.\n",
    "\n",
    "The agent follows a [simple yet effective pattern](https://langchain-ai.github.io/langgraph/tutorials/workflows/#agent):\n",
    "\n",
    "1. **LLM Decision Node**: Analyzes the current state and decides whether to make tool calls or provide a final response\n",
    "2. **Tool Execution Node**: Executes search tools when the LLM determines more information is needed\n",
    "3. **Research Compression Node**: Summarizes and compresses research findings for efficient processing\n",
    "4. **Routing Logic**: Determines workflow continuation based on LLM decisions\n",
    "\n",
    "![Screenshot 2025-07-16 at 1.07.45 PM.png](attachment:3ceab77d-beb4-4189-be07-0634f1f72202.png)\n",
    "\n",
    "### Prompt\n",
    "\n",
    "First, we'll define a prompt that instructs our agent to use available search tools. \n",
    "\n",
    "To prevent excessive tool calls and maintain research focus, we use [a few prompting techniques for agents](https://youtu.be/XSZP9GhhuAc?si=zowpViL-2j-vI9hA):\n",
    "\n",
    "#### 1. Think Like The Agent\n",
    "What instructions would you give a new work colleague?\n",
    "- **Read the question carefully** - What specific information does the user need?\n",
    "- **Start with broader searches** - Use broad, comprehensive queries first\n",
    "- **After each search, pause and assess** - Do I have enough to answer? What's still missing?\n",
    "- **Execute narrower searches as you gather information** - Fill in the gaps.\n",
    "\n",
    "#### 2. Concrete Heuristics (Prevent \"Spin-Out\" on excessive tool calls)\n",
    "Use **Hard Limits** to prevent the research agent from calling tools excessively:\n",
    "- **Stop when you can answer confidently** - Don't keep searching for perfection.\n",
    "- **Give it budgets** - Use 2-3 search tool calls for simple queries. Use up to 5 for complex queries.\n",
    "- **Limit** - Always stop after 5 search tool calls if you cannot find the right source(s).\n",
    "\n",
    "#### 3. Show your thinking\n",
    "After each search tool calling, use [`think_tool` to analyze the results](https://www.anthropic.com/engineering/claude-think-tool):\n",
    "- What key information did I find? \n",
    "- What's missing?\n",
    "- Do I have enough to answer the question comprehensively?\n",
    "- Should I search more or provide my answer?\n",
    "\n",
    "#### Results\n",
    "These techniques transform problematic research behavior like:\n",
    "```\n",
    "\"best coffee shops SF\" → \"Saint Frank Coffee details\" → \"Sightglass Coffee details\" → \"Ritual Coffee details\" → etc. (20+ searches)\n",
    "```\n",
    "\n",
    "Into efficient patterns like:\n",
    "```\n",
    "\"best coffee shops SF\" → ThinkTool(analyze results) → \"SF specialty coffee quality ratings\" → ThinkTool(assess completeness) → provide answer (3-5 searches total)\n",
    "```\n",
    "\n",
    "The key insight: **Think like a human researcher with limited time** - this prevents the \"spin-out problem\" where agents continue searching indefinitely."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #000080; text-decoration-color: #000080\">╭────────────────────────────────────────── </span><span style=\"color: #008000; text-decoration-color: #008000; font-weight: bold\">Research Agent Instructions</span><span style=\"color: #000080; text-decoration-color: #000080\"> ──────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                                                                                                 <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  You are a research assistant conducting research on the user's input topic. For context, today's date is       <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  {date}.                                                                                                        <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                                                                                                 <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">&lt;Task&gt;</span>                                                                                                         <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  Your job is to use tools to gather information about the user's input topic.                                   <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  You can use any of the tools provided to you to find resources that can help answer the research question.     <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  You can call these tools in series or in parallel, your research is conducted in a tool-calling loop.          <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">&lt;/Task&gt;</span>                                                                                                        <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                                                                                                 <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">&lt;Available Tools&gt;</span>                                                                                              <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  You have access to two main tools:                                                                             <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  1. **tavily_search**: For conducting web searches to gather information                                        <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  2. **think_tool**: For reflection and strategic planning during research                                       <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                                                                                                 <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  **CRITICAL: Use think_tool after each search to reflect on results and plan next steps**                       <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">&lt;/Available Tools&gt;</span>                                                                                             <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                                                                                                 <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">&lt;Instructions&gt;</span>                                                                                                 <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  Think like a human researcher with limited time. Follow these steps:                                           <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                                                                                                 <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  1. **Read the question carefully** - What specific information does the user need?                             <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  2. **Start with broader searches** - Use broad, comprehensive queries first                                    <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  3. **After each search, pause and assess** - Do I have enough to answer? What's still missing?                 <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  4. **Execute narrower searches as you gather information** - Fill in the gaps                                  <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  5. **Stop when you can answer confidently** - Don't keep searching for perfection                              <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">&lt;/Instructions&gt;</span>                                                                                                <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                                                                                                 <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">&lt;Hard Limits&gt;</span>                                                                                                  <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  **Tool Call Budgets** (Prevent excessive searching):                                                           <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  - **Simple queries**: Use 2-3 search tool calls maximum                                                        <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  - **Complex queries**: Use up to 5 search tool calls maximum                                                   <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  - **Always stop**: After 5 search tool calls if you cannot find the right sources                              <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                                                                                                 <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  **Stop Immediately When**:                                                                                     <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  - You can answer the user's question comprehensively                                                           <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  - You have 3+ relevant examples/sources for the question                                                       <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  - Your last 2 searches returned similar information                                                            <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">&lt;/Hard Limits&gt;</span>                                                                                                 <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                                                                                                 <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">&lt;Show Your Thinking&gt;</span>                                                                                           <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  After each search tool call, use think_tool to analyze the results:                                            <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  - What key information did I find?                                                                             <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  - What's missing?                                                                                              <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  - Do I have enough to answer the question comprehensively?                                                     <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  - Should I search more or provide my answer?                                                                   <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>  <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">&lt;/Show Your Thinking&gt;</span>                                                                                          <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                                                                                                 <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                                                                                                 <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[34m╭─\u001b[0m\u001b[34m─────────────────────────────────────────\u001b[0m\u001b[34m \u001b[0m\u001b[1;32mResearch Agent Instructions\u001b[0m\u001b[34m \u001b[0m\u001b[34m─────────────────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
       "\u001b[34m│\u001b[0m                                                                                                                 \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  You are a research assistant conducting research on the user's input topic. For context, today's date is       \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  {date}.                                                                                                        \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m                                                                                                                 \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  \u001b[1;34m<Task>\u001b[0m                                                                                                         \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  Your job is to use tools to gather information about the user's input topic.                                   \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  You can use any of the tools provided to you to find resources that can help answer the research question.     \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  You can call these tools in series or in parallel, your research is conducted in a tool-calling loop.          \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  \u001b[1;34m</Task>\u001b[0m                                                                                                        \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m                                                                                                                 \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  \u001b[1;34m<Available Tools>\u001b[0m                                                                                              \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  You have access to two main tools:                                                                             \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  1. **tavily_search**: For conducting web searches to gather information                                        \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  2. **think_tool**: For reflection and strategic planning during research                                       \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m                                                                                                                 \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  **CRITICAL: Use think_tool after each search to reflect on results and plan next steps**                       \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  \u001b[1;34m</Available Tools>\u001b[0m                                                                                             \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m                                                                                                                 \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  \u001b[1;34m<Instructions>\u001b[0m                                                                                                 \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  Think like a human researcher with limited time. Follow these steps:                                           \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m                                                                                                                 \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  1. **Read the question carefully** - What specific information does the user need?                             \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  2. **Start with broader searches** - Use broad, comprehensive queries first                                    \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  3. **After each search, pause and assess** - Do I have enough to answer? What's still missing?                 \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  4. **Execute narrower searches as you gather information** - Fill in the gaps                                  \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  5. **Stop when you can answer confidently** - Don't keep searching for perfection                              \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  \u001b[1;34m</Instructions>\u001b[0m                                                                                                \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m                                                                                                                 \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  \u001b[1;34m<Hard Limits>\u001b[0m                                                                                                  \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  **Tool Call Budgets** (Prevent excessive searching):                                                           \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  - **Simple queries**: Use 2-3 search tool calls maximum                                                        \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  - **Complex queries**: Use up to 5 search tool calls maximum                                                   \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  - **Always stop**: After 5 search tool calls if you cannot find the right sources                              \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m                                                                                                                 \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  **Stop Immediately When**:                                                                                     \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  - You can answer the user's question comprehensively                                                           \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  - You have 3+ relevant examples/sources for the question                                                       \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  - Your last 2 searches returned similar information                                                            \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  \u001b[1;34m</Hard Limits>\u001b[0m                                                                                                 \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m                                                                                                                 \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  \u001b[1;34m<Show Your Thinking>\u001b[0m                                                                                           \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  After each search tool call, use think_tool to analyze the results:                                            \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  - What key information did I find?                                                                             \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  - What's missing?                                                                                              \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  - Do I have enough to answer the question comprehensively?                                                     \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  - Should I search more or provide my answer?                                                                   \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m  \u001b[1;34m</Show Your Thinking>\u001b[0m                                                                                          \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m                                                                                                                 \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m                                                                                                                 \u001b[34m│\u001b[0m\n",
       "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from utils import show_prompt\n",
    "from deep_research_from_scratch.prompts import research_agent_prompt\n",
    "show_prompt(research_agent_prompt, \"Research Agent Instructions\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### State and Schemas\n",
    "\n",
    "We'll create the agent state object.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Overwriting ../src/deep_research_from_scratch/state_research.py\n"
     ]
    }
   ],
   "source": [
    "%%writefile ../src/deep_research_from_scratch/state_research.py\n",
    "\n",
    "\"\"\"\n",
    "State Definitions and Pydantic Schemas for Research Agent\n",
    "\n",
    "This module defines the state objects and structured schemas used for\n",
    "the research agent workflow, including researcher state management and output schemas.\n",
    "\"\"\"\n",
    "\n",
    "import operator\n",
    "from typing_extensions import TypedDict, Annotated, List, Sequence\n",
    "from pydantic import BaseModel, Field\n",
    "from langchain_core.messages import BaseMessage\n",
    "from langgraph.graph.message import add_messages\n",
    "\n",
    "# ===== STATE DEFINITIONS =====\n",
    "\n",
    "class ResearcherState(TypedDict):\n",
    "    \"\"\"\n",
    "    State for the research agent containing message history and research metadata.\n",
    "    \n",
    "    This state tracks the researcher's conversation, iteration count for limiting\n",
    "    tool calls, the research topic being investigated, compressed findings,\n",
    "    and raw research notes for detailed analysis.\n",
    "    \"\"\"\n",
    "    researcher_messages: Annotated[Sequence[BaseMessage], add_messages]\n",
    "    tool_call_iterations: int\n",
    "    research_topic: str\n",
    "    compressed_research: str\n",
    "    raw_notes: Annotated[List[str], operator.add]\n",
    "\n",
    "class ResearcherOutputState(TypedDict):\n",
    "    \"\"\"\n",
    "    Output state for the research agent containing final research results.\n",
    "    \n",
    "    This represents the final output of the research process with compressed\n",
    "    research findings and all raw notes from the research process.\n",
    "    \"\"\"\n",
    "    compressed_research: str\n",
    "    raw_notes: Annotated[List[str], operator.add]\n",
    "    researcher_messages: Annotated[Sequence[BaseMessage], add_messages]\n",
    "\n",
    "# ===== STRUCTURED OUTPUT SCHEMAS =====\n",
    "\n",
    "class ClarifyWithUser(BaseModel):\n",
    "    \"\"\"Schema for user clarification decisions during scoping phase.\"\"\"\n",
    "    need_clarification: bool = Field(\n",
    "        description=\"Whether the user needs to be asked a clarifying question.\",\n",
    "    )\n",
    "    question: str = Field(\n",
    "        description=\"A question to ask the user to clarify the report scope\",\n",
    "    )\n",
    "    verification: str = Field(\n",
    "        description=\"Verify message that we will start research after the user has provided the necessary information.\",\n",
    "    )\n",
    "\n",
    "class ResearchQuestion(BaseModel):\n",
    "    \"\"\"Schema for research brief generation.\"\"\"\n",
    "    research_brief: str = Field(\n",
    "        description=\"A research question that will be used to guide the research.\",\n",
    "    )\n",
    "\n",
    "class Summary(BaseModel):\n",
    "    \"\"\"Schema for webpage content summarization.\"\"\"\n",
    "    summary: str = Field(description=\"Concise summary of the webpage content\")\n",
    "    key_excerpts: str = Field(description=\"Important quotes and excerpts from the content\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, we'll define our research tool.  \n",
    "\n",
    "#### Tavily SDK Integration\n",
    "\n",
    "We'll use the [Tavily SDK](https://docs.tavily.com/sdk/python/reference) to perform web searches.\n",
    " \n",
    "Tavily is a search engine optimized for AI applications with a generous free tier, providing:\n",
    "- Real-time web search results\n",
    "- Content extraction and summarization\n",
    "- Domain filtering and result ranking\n",
    "- Async support for performance\n",
    "\n",
    "#### Alternative Web Content Sources\n",
    "\n",
    "While we use Tavily's search API in this tutorial, there are several other excellent options for web content extraction:\n",
    "\n",
    "- **[Tavily Extract](https://docs.tavily.com/documentation/api-reference/endpoint/extract)**: Tavily's dedicated content extraction endpoint that can extract and clean content from specific URLs without performing searches\n",
    "- **[Jina Reader](https://jina.ai/reader/)**: A powerful web content extraction service that converts web pages to clean, LLM-friendly text by simply prepending `https://r.jina.ai/` to any URL\n",
    "- **[Firecrawl](https://www.firecrawl.dev/)**: A comprehensive web scraping platform that converts websites into clean markdown or structured data, with advanced features like JavaScript rendering and sitemap crawling\n",
    "\n",
    "Each tool has different strengths: Tavily excels at search-first workflows, Jina Reader offers the simplest URL-to-text conversion, and Firecrawl provides the most comprehensive web scraping capabilities for complex sites.\n",
    "\n",
    "####  LangChain Tools\n",
    "\n",
    "We'll convert our Tavily search function into a [LangChain tool](https://python.langchain.com/docs/concepts/tools/) using the `@tool` decorator. This enables:\n",
    "- Automatic schema generation for the LLM\n",
    "- Integration with LangChain's agent framework\n",
    "- Standardized tool calling interface\n",
    "- Type validation and documentation\n",
    "\n",
    "Note that some of the arguments are noted as [InjectedToolArg](https://python.langchain.com/api_reference/core/tools/langchain_core.tools.base.InjectedToolArg.html). These are not included in the tool schema sent to the LLM, and instead are injected during execution. This gives us the flexibility to inject values at runtime, but does not burden the language model with the responsibility of managing these arguments."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Overwriting ../src/deep_research_from_scratch/utils.py\n"
     ]
    }
   ],
   "source": [
    "%%writefile ../src/deep_research_from_scratch/utils.py\n",
    "\n",
    "\"\"\"Research Utilities and Tools.\n",
    "\n",
    "This module provides search and content processing utilities for the research agent,\n",
    "including web search capabilities and content summarization tools.\n",
    "\"\"\"\n",
    "\n",
    "from pathlib import Path\n",
    "from datetime import datetime\n",
    "from typing_extensions import Annotated, List, Literal\n",
    "\n",
    "from langchain.chat_models import init_chat_model \n",
    "from langchain_core.messages import HumanMessage\n",
    "from langchain_core.runnables import RunnableConfig\n",
    "from langchain_core.tools import tool, InjectedToolArg\n",
    "from tavily import TavilyClient\n",
    "\n",
    "from deep_research_from_scratch.state_research import Summary\n",
    "from deep_research_from_scratch.prompts import summarize_webpage_prompt\n",
    "\n",
    "# ===== UTILITY FUNCTIONS =====\n",
    "\n",
    "def get_today_str() -> str:\n",
    "    \"\"\"Get current date in a human-readable format.\"\"\"\n",
    "    return datetime.now().strftime(\"%a %b %-d, %Y\")\n",
    "\n",
    "def get_current_dir() -> Path:\n",
    "    \"\"\"Get the current directory of the module.\n",
    "\n",
    "    This function is compatible with Jupyter notebooks and regular Python scripts.\n",
    "\n",
    "    Returns:\n",
    "        Path object representing the current directory\n",
    "    \"\"\"\n",
    "    try:\n",
    "        return Path(__file__).resolve().parent\n",
    "    except NameError:  # __file__ is not defined\n",
    "        return Path.cwd()\n",
    "\n",
    "# ===== CONFIGURATION =====\n",
    "\n",
    "summarization_model = init_chat_model(model=\"openai:gpt-4.1-mini\")\n",
    "tavily_client = TavilyClient()\n",
    "\n",
    "# ===== SEARCH FUNCTIONS =====\n",
    "\n",
    "def tavily_search_multiple(\n",
    "    search_queries: List[str], \n",
    "    max_results: int = 3, \n",
    "    topic: Literal[\"general\", \"news\", \"finance\"] = \"general\", \n",
    "    include_raw_content: bool = True, \n",
    ") -> List[dict]:\n",
    "    \"\"\"Perform search using Tavily API for multiple queries.\n",
    "\n",
    "    Args:\n",
    "        search_queries: List of search queries to execute\n",
    "        max_results: Maximum number of results per query\n",
    "        topic: Topic filter for search results\n",
    "        include_raw_content: Whether to include raw webpage content\n",
    "\n",
    "    Returns:\n",
    "        List of search result dictionaries\n",
    "    \"\"\"\n",
    "    \n",
    "    # Execute searches sequentially. Note: yon can use AsyncTavilyClient to parallelize this step.\n",
    "    search_docs = []\n",
    "    for query in search_queries:\n",
    "        result = tavily_client.search(\n",
    "            query,\n",
    "            max_results=max_results,\n",
    "            include_raw_content=include_raw_content,\n",
    "            topic=topic\n",
    "        )\n",
    "        search_docs.append(result)\n",
    "\n",
    "    return search_docs\n",
    "\n",
    "def summarize_webpage_content(webpage_content: str) -> str:\n",
    "    \"\"\"Summarize webpage content using the configured summarization model.\n",
    "    \n",
    "    Args:\n",
    "        webpage_content: Raw webpage content to summarize\n",
    "        \n",
    "    Returns:\n",
    "        Formatted summary with key excerpts\n",
    "    \"\"\"\n",
    "    try:\n",
    "        # Set up structured output model for summarization\n",
    "        structured_model = summarization_model.with_structured_output(Summary)\n",
    "        \n",
    "        # Generate summary\n",
    "        summary = structured_model.invoke([\n",
    "            HumanMessage(content=summarize_webpage_prompt.format(\n",
    "                webpage_content=webpage_content, \n",
    "                date=get_today_str()\n",
    "            ))\n",
    "        ])\n",
    "        \n",
    "        # Format summary with clear structure\n",
    "        formatted_summary = (\n",
    "            f\"<summary>\\n{summary.summary}\\n</summary>\\n\\n\"\n",
    "            f\"<key_excerpts>\\n{summary.key_excerpts}\\n</key_excerpts>\"\n",
    "        )\n",
    "        \n",
    "        return formatted_summary\n",
    "        \n",
    "    except Exception as e:\n",
    "        print(f\"Failed to summarize webpage: {str(e)}\")\n",
    "        return webpage_content[:1000] + \"...\" if len(webpage_content) > 1000 else webpage_content\n",
    "\n",
    "def deduplicate_search_results(search_results: List[dict]) -> dict:\n",
    "    \"\"\"Deduplicate search results by URL to avoid processing duplicate content.\n",
    "    \n",
    "    Args:\n",
    "        search_results: List of search result dictionaries\n",
    "        \n",
    "    Returns:\n",
    "        Dictionary mapping URLs to unique results\n",
    "    \"\"\"\n",
    "    unique_results = {}\n",
    "    \n",
    "    for response in search_results:\n",
    "        for result in response['results']:\n",
    "            url = result['url']\n",
    "            if url not in unique_results:\n",
    "                unique_results[url] = result\n",
    "    \n",
    "    return unique_results\n",
    "\n",
    "def process_search_results(unique_results: dict) -> dict:\n",
    "    \"\"\"Process search results by summarizing content where available.\n",
    "    \n",
    "    Args:\n",
    "        unique_results: Dictionary of unique search results\n",
    "        \n",
    "    Returns:\n",
    "        Dictionary of processed results with summaries\n",
    "    \"\"\"\n",
    "    summarized_results = {}\n",
    "    \n",
    "    for url, result in unique_results.items():\n",
    "        # Use existing content if no raw content for summarization\n",
    "        if not result.get(\"raw_content\"):\n",
    "            content = result['content']\n",
    "        else:\n",
    "            # Summarize raw content for better processing\n",
    "            content = summarize_webpage_content(result['raw_content'])\n",
    "        \n",
    "        summarized_results[url] = {\n",
    "            'title': result['title'],\n",
    "            'content': content\n",
    "        }\n",
    "    \n",
    "    return summarized_results\n",
    "\n",
    "def format_search_output(summarized_results: dict) -> str:\n",
    "    \"\"\"Format search results into a well-structured string output.\n",
    "    \n",
    "    Args:\n",
    "        summarized_results: Dictionary of processed search results\n",
    "        \n",
    "    Returns:\n",
    "        Formatted string of search results with clear source separation\n",
    "    \"\"\"\n",
    "    if not summarized_results:\n",
    "        return \"No valid search results found. Please try different search queries or use a different search API.\"\n",
    "    \n",
    "    formatted_output = \"Search results: \\n\\n\"\n",
    "    \n",
    "    for i, (url, result) in enumerate(summarized_results.items(), 1):\n",
    "        formatted_output += f\"\\n\\n--- SOURCE {i}: {result['title']} ---\\n\"\n",
    "        formatted_output += f\"URL: {url}\\n\\n\"\n",
    "        formatted_output += f\"SUMMARY:\\n{result['content']}\\n\\n\"\n",
    "        formatted_output += \"-\" * 80 + \"\\n\"\n",
    "    \n",
    "    return formatted_output\n",
    "\n",
    "# ===== RESEARCH TOOLS =====\n",
    "\n",
    "@tool(parse_docstring=True)\n",
    "def tavily_search(\n",
    "    query: str,\n",
    "    max_results: Annotated[int, InjectedToolArg] = 3,\n",
    "    topic: Annotated[Literal[\"general\", \"news\", \"finance\"], InjectedToolArg] = \"general\",\n",
    ") -> str:\n",
    "    \"\"\"Fetch results from Tavily search API with content summarization.\n",
    "\n",
    "    Args:\n",
    "        query: A single search query to execute\n",
    "        max_results: Maximum number of results to return\n",
    "        topic: Topic to filter results by ('general', 'news', 'finance')\n",
    "\n",
    "    Returns:\n",
    "        Formatted string of search results with summaries\n",
    "    \"\"\"\n",
    "    # Execute search for single query\n",
    "    search_results = tavily_search_multiple(\n",
    "        [query],  # Convert single query to list for the internal function\n",
    "        max_results=max_results,\n",
    "        topic=topic,\n",
    "        include_raw_content=True,\n",
    "    )\n",
    "\n",
    "    # Deduplicate results by URL to avoid processing duplicate content\n",
    "    unique_results = deduplicate_search_results(search_results)\n",
    "\n",
    "    # Process results with summarization\n",
    "    summarized_results = process_search_results(unique_results)\n",
    "\n",
    "    # Format output for consumption\n",
    "    return format_search_output(summarized_results)\n",
    "\n",
    "@tool(parse_docstring=True)\n",
    "def think_tool(reflection: str) -> str:\n",
    "    \"\"\"Tool for strategic reflection on research progress and decision-making.\n",
    "    \n",
    "    Use this tool after each search to analyze results and plan next steps systematically.\n",
    "    This creates a deliberate pause in the research workflow for quality decision-making.\n",
    "    \n",
    "    When to use:\n",
    "    - After receiving search results: What key information did I find?\n",
    "    - Before deciding next steps: Do I have enough to answer comprehensively?\n",
    "    - When assessing research gaps: What specific information am I still missing?\n",
    "    - Before concluding research: Can I provide a complete answer now?\n",
    "    \n",
    "    Reflection should address:\n",
    "    1. Analysis of current findings - What concrete information have I gathered?\n",
    "    2. Gap assessment - What crucial information is still missing?\n",
    "    3. Quality evaluation - Do I have sufficient evidence/examples for a good answer?\n",
    "    4. Strategic decision - Should I continue searching or provide my answer?\n",
    "    \n",
    "    Args:\n",
    "        reflection: Your detailed reflection on research progress, findings, gaps, and next steps\n",
    "        \n",
    "    Returns:\n",
    "        Confirmation that reflection was recorded for decision-making\n",
    "    \"\"\"\n",
    "    return f\"Reflection recorded: {reflection}\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Research Agent\n",
    "\n",
    "#### Overview\n",
    "\n",
    "Our research agent perform iterative tool-calling to search for information. \n",
    "\n",
    "The agent follows a [simple yet effective pattern](https://langchain-ai.github.io/langgraph/tutorials/workflows/#agent):\n",
    "\n",
    "1. **LLM Decision Node**: Analyzes the current state and decides whether to make tool calls or provide a final response\n",
    "2. **Tool Execution Node**: Executes search tools when the LLM determines more information is needed\n",
    "3. **Research Compression Node**: Summarizes and compresses research findings for efficient processing\n",
    "4. **Routing Logic**: Determines workflow continuation based on LLM decisions\n",
    "\n",
    "#### Context Engineering Strategy\n",
    "\n",
    "We apply **context engineering** in two places following the principles outlined in [Context Engineering for Agents](https://blog.langchain.com/context-engineering-for-agents/):\n",
    "\n",
    "#### 1. Webpage Content Summarization\n",
    "Raw search results often contain excessive noise (navigation, ads, boilerplate content). Our `summarize_webpage_content()` function:\n",
    "- Uses structured output to extract key information and relevant excerpts\n",
    "- Filters out irrelevant content while preserving factual details\n",
    "- Compresses lengthy articles into focused summaries\n",
    "- Maintains source attribution for credibility\n",
    "\n",
    "#### 2. Research Result Compression  \n",
    "As the agent performs multiple searches, the conversation context grows rapidly. Our `compress_research()` function:\n",
    "- Synthesizes findings from multiple tool calls into cohesive insights\n",
    "- Extracts raw notes for detailed analysis while maintaining compressed summaries\n",
    "- Reduces token usage for subsequent LLM calls\n",
    "- Preserves essential information for report writing\n",
    "\n",
    "This dual-layer context engineering allows the agent to process extensive information efficiently while maintaining high-quality research output.\n",
    "\n",
    "#### 3. Performing Careful Compression\n",
    "[Compression](https://manus.im/blog/Context-Engineering-for-AI-Agents-Lessons-from-Building-Manus) [is risky](https://cognition.ai/blog/dont-build-multi-agents)! We need to be very careful about loosing valuable information. We'll use an LLM for compression with instructions in a system prompt that comes before a potentially long, token-heavy trajectory of multiple tool calls. The long context can cause the compression LLM [to loose sight of the task instructions](https://www.dbreunig.com/2025/06/22/how-contexts-fail-and-how-to-fix-them.html), leading to generic summaries that loose information. So, we reinforce the compression task by adding a `compress_research_human_message` that:\n",
    "- Explicitly restates the original research topic at compression time\n",
    "- Reminds the model to preserve ALL information relevant to the specific question\n",
    "- Emphasizes that comprehensive findings are critical for final report generation\n",
    "- Prevents task drift during the compression phase\n",
    "\n",
    "#### 4. Output Token Management\n",
    "Research compression can generate long outputs. We need to sure that they do not exceed model token limits, which can cause truncated responses that cut off mid-sentence (as seen with \"**Sextant Coffee Ro\" being cut off). As an example, [GPT-4.1 has output limit of up to 33k tokens](https://openai.com/index/gpt-4-1/) and [Claude4 sonnet supports 64k](https://www.anthropic.com/claude/sonnet). \n",
    "\n",
    "Model SDKs / LangChain integrations may cap this (e.g., [to `1024` tokens in the case of Claude](https://github.com/langchain-ai/langchain/blob/master/libs/partners/anthropic/langchain_anthropic/chat_models.py#L1149C5-L1149C15)). Simply ensure that max tokens is set to ensure complete output. This prevents incomplete compression outputs and ensures full research findings are preserved. Test compression quality vs latency for different models. For example: \n",
    "\n",
    "* Claude4-Sonnet 99s latency for compression ([trace](https://smith.langchain.com/public/ca006e79-8838-47eb-9d8c-c7fe7d57a6bc/r))\n",
    "* GPT-4.1 38s latency for compression ([trace](https://smith.langchain.com/public/ca846b08-7501-43a0-bbda-735d4b07ab0a/r))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Overwriting ../src/deep_research_from_scratch/research_agent.py\n"
     ]
    }
   ],
   "source": [
    "%%writefile ../src/deep_research_from_scratch/research_agent.py\n",
    "\n",
    "\"\"\"Research Agent Implementation.\n",
    "\n",
    "This module implements a research agent that can perform iterative web searches\n",
    "and synthesis to answer complex research questions.\n",
    "\"\"\"\n",
    "\n",
    "from pydantic import BaseModel, Field\n",
    "from typing_extensions import Literal\n",
    "\n",
    "from langgraph.graph import StateGraph, START, END\n",
    "from langchain_core.messages import SystemMessage, HumanMessage, ToolMessage, filter_messages\n",
    "from langchain.chat_models import init_chat_model\n",
    "\n",
    "from deep_research_from_scratch.state_research import ResearcherState, ResearcherOutputState\n",
    "from deep_research_from_scratch.utils import tavily_search, get_today_str, think_tool\n",
    "from deep_research_from_scratch.prompts import research_agent_prompt, compress_research_system_prompt, compress_research_human_message\n",
    "\n",
    "# ===== CONFIGURATION =====\n",
    "\n",
    "# Set up tools and model binding\n",
    "tools = [tavily_search, think_tool]\n",
    "tools_by_name = {tool.name: tool for tool in tools}\n",
    "\n",
    "# Initialize models\n",
    "model = init_chat_model(model=\"anthropic:claude-sonnet-4-20250514\")\n",
    "model_with_tools = model.bind_tools(tools)\n",
    "summarization_model = init_chat_model(model=\"openai:gpt-4.1-mini\")\n",
    "compress_model = init_chat_model(model=\"openai:gpt-4.1\", max_tokens=32000) # model=\"anthropic:claude-sonnet-4-20250514\", max_tokens=64000\n",
    "\n",
    "# ===== AGENT NODES =====\n",
    "\n",
    "def llm_call(state: ResearcherState):\n",
    "    \"\"\"Analyze current state and decide on next actions.\n",
    "    \n",
    "    The model analyzes the current conversation state and decides whether to:\n",
    "    1. Call search tools to gather more information\n",
    "    2. Provide a final answer based on gathered information\n",
    "    \n",
    "    Returns updated state with the model's response.\n",
    "    \"\"\"\n",
    "    return {\n",
    "        \"researcher_messages\": [\n",
    "            model_with_tools.invoke(\n",
    "                [SystemMessage(content=research_agent_prompt)] + state[\"researcher_messages\"]\n",
    "            )\n",
    "        ]\n",
    "    }\n",
    "\n",
    "def tool_node(state: ResearcherState):\n",
    "    \"\"\"Execute all tool calls from the previous LLM response.\n",
    "    \n",
    "    Executes all tool calls from the previous LLM responses.\n",
    "    Returns updated state with tool execution results.\n",
    "    \"\"\"\n",
    "    tool_calls = state[\"researcher_messages\"][-1].tool_calls\n",
    " \n",
    "    # Execute all tool calls\n",
    "    observations = []\n",
    "    for tool_call in tool_calls:\n",
    "        tool = tools_by_name[tool_call[\"name\"]]\n",
    "        observations.append(tool.invoke(tool_call[\"args\"]))\n",
    "            \n",
    "    # Create tool message outputs\n",
    "    tool_outputs = [\n",
    "        ToolMessage(\n",
    "            content=observation,\n",
    "            name=tool_call[\"name\"],\n",
    "            tool_call_id=tool_call[\"id\"]\n",
    "        ) for observation, tool_call in zip(observations, tool_calls)\n",
    "    ]\n",
    "    \n",
    "    return {\"researcher_messages\": tool_outputs}\n",
    "\n",
    "def compress_research(state: ResearcherState) -> dict:\n",
    "    \"\"\"Compress research findings into a concise summary.\n",
    "    \n",
    "    Takes all the research messages and tool outputs and creates\n",
    "    a compressed summary suitable for the supervisor's decision-making.\n",
    "    \"\"\"\n",
    "    \n",
    "    system_message = compress_research_system_prompt.format(date=get_today_str())\n",
    "    messages = [SystemMessage(content=system_message)] + state.get(\"researcher_messages\", []) + [HumanMessage(content=compress_research_human_message)]\n",
    "    response = compress_model.invoke(messages)\n",
    "    \n",
    "    # Extract raw notes from tool and AI messages\n",
    "    raw_notes = [\n",
    "        str(m.content) for m in filter_messages(\n",
    "            state[\"researcher_messages\"], \n",
    "            include_types=[\"tool\", \"ai\"]\n",
    "        )\n",
    "    ]\n",
    "    \n",
    "    return {\n",
    "        \"compressed_research\": str(response.content),\n",
    "        \"raw_notes\": [\"\\n\".join(raw_notes)]\n",
    "    }\n",
    "\n",
    "# ===== ROUTING LOGIC =====\n",
    "\n",
    "def should_continue(state: ResearcherState) -> Literal[\"tool_node\", \"compress_research\"]:\n",
    "    \"\"\"Determine whether to continue research or provide final answer.\n",
    "    \n",
    "    Determines whether the agent should continue the research loop or provide\n",
    "    a final answer based on whether the LLM made tool calls.\n",
    "    \n",
    "    Returns:\n",
    "        \"tool_node\": Continue to tool execution\n",
    "        \"compress_research\": Stop and compress research\n",
    "    \"\"\"\n",
    "    messages = state[\"researcher_messages\"]\n",
    "    last_message = messages[-1]\n",
    "    \n",
    "    # If the LLM makes a tool call, continue to tool execution\n",
    "    if last_message.tool_calls:\n",
    "        return \"tool_node\"\n",
    "    # Otherwise, we have a final answer\n",
    "    return \"compress_research\"\n",
    "\n",
    "# ===== GRAPH CONSTRUCTION =====\n",
    "\n",
    "# Build the agent workflow\n",
    "agent_builder = StateGraph(ResearcherState, output_schema=ResearcherOutputState)\n",
    "\n",
    "# Add nodes to the graph\n",
    "agent_builder.add_node(\"llm_call\", llm_call)\n",
    "agent_builder.add_node(\"tool_node\", tool_node)\n",
    "agent_builder.add_node(\"compress_research\", compress_research)\n",
    "\n",
    "# Add edges to connect nodes\n",
    "agent_builder.add_edge(START, \"llm_call\")\n",
    "agent_builder.add_conditional_edges(\n",
    "    \"llm_call\",\n",
    "    should_continue,\n",
    "    {\n",
    "        \"tool_node\": \"tool_node\", # Continue research loop\n",
    "        \"compress_research\": \"compress_research\", # Provide final answer\n",
    "    },\n",
    ")\n",
    "agent_builder.add_edge(\"tool_node\", \"llm_call\") # Loop back for more research\n",
    "agent_builder.add_edge(\"compress_research\", END)\n",
    "\n",
    "# Compile the agent\n",
    "researcher_agent = agent_builder.compile()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from IPython.display import Image, display\n",
    "from deep_research_from_scratch.research_agent import researcher_agent\n",
    "\n",
    "# Show the agent\n",
    "display(Image(researcher_agent.get_graph(xray=True).draw_mermaid_png()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #000080; text-decoration-color: #000080\">╭─────────────────────────────────────────────────── 🧑 Human ────────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span> I want to identify and evaluate the coffee shops in San Francisco that are considered the best based            <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span> specifically                                                                                                    <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span> on coffee quality. My research should focus on analyzing and comparing coffee shops within the San Francisco    <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span> area,                                                                                                           <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span> using coffee quality as the primary criterion. I am open regarding methods of assessing coffee quality (e.g.,   <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span> expert reviews, customer ratings, specialty coffee certifications), and there are no constraints on ambiance,   <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span> location, wifi, or food options unless they directly impact perceived coffee quality. Please prioritize primary <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span> sources such as the official websites of coffee shops, reputable third-party coffee review organizations (like  <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span> Coffee Review or Specialty Coffee Association), and prominent review aggregators like Google or Yelp where      <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span> direct                                                                                                          <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span> customer feedback about coffee quality can be found. The study should result in a well-supported list or        <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span> ranking of                                                                                                      <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span> the top coffee shops in San Francisco, emphasizing their coffee quality according to the latest available data  <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span> as                                                                                                              <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span> of July 2025..                                                                                                  <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
       "<span style=\"color: #000080; text-decoration-color: #000080\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[34m╭─\u001b[0m\u001b[34m──────────────────────────────────────────────────\u001b[0m\u001b[34m 🧑 Human \u001b[0m\u001b[34m───────────────────────────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
       "\u001b[34m│\u001b[0m I want to identify and evaluate the coffee shops in San Francisco that are considered the best based            \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m specifically                                                                                                    \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m on coffee quality. My research should focus on analyzing and comparing coffee shops within the San Francisco    \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m area,                                                                                                           \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m using coffee quality as the primary criterion. I am open regarding methods of assessing coffee quality (e.g.,   \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m expert reviews, customer ratings, specialty coffee certifications), and there are no constraints on ambiance,   \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m location, wifi, or food options unless they directly impact perceived coffee quality. Please prioritize primary \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m sources such as the official websites of coffee shops, reputable third-party coffee review organizations (like  \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m Coffee Review or Specialty Coffee Association), and prominent review aggregators like Google or Yelp where      \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m direct                                                                                                          \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m customer feedback about coffee quality can be found. The study should result in a well-supported list or        \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m ranking of                                                                                                      \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m the top coffee shops in San Francisco, emphasizing their coffee quality according to the latest available data  \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m as                                                                                                              \u001b[34m│\u001b[0m\n",
       "\u001b[34m│\u001b[0m of July 2025..                                                                                                  \u001b[34m│\u001b[0m\n",
       "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╭───────────────────────────────────────────────────── 📝 AI ─────────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> I'll help you research the best coffee shops in San Francisco based specifically on coffee quality. Let me      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> start with a comprehensive search to identify highly-rated coffee shops and their quality assessments.          <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> 🔧 Tool Call: tavily_search                                                                                     <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>    Args: {                                                                                                      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>   \"query\": \"best coffee shops San Francisco 2024 2025 coffee quality specialty coffee roasters reviews\"         <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> }                                                                                                               <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>    ID: toolu_011Gqpvy2aoj5z3UP6Y8SixU                                                                           <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[37m╭─\u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m 📝 AI \u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m─╮\u001b[0m\n",
       "\u001b[37m│\u001b[0m I'll help you research the best coffee shops in San Francisco based specifically on coffee quality. Let me      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m start with a comprehensive search to identify highly-rated coffee shops and their quality assessments.          \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m 🔧 Tool Call: tavily_search                                                                                     \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m    Args: {                                                                                                      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m   \"query\": \"best coffee shops San Francisco 2024 2025 coffee quality specialty coffee roasters reviews\"         \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m }                                                                                                               \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m    ID: toolu_011Gqpvy2aoj5z3UP6Y8SixU                                                                           \u001b[37m│\u001b[0m\n",
       "\u001b[37m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #808000; text-decoration-color: #808000\">╭──────────────────────────────────────────────── 🔧 Tool Output ─────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Search results:                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --- SOURCE 1: Best Coffee Roaster San Francisco, CA - Last Updated August 2025 ---                              <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> URL: https://m.yelp.com/search?find_desc=Best+Coffee+Roaster&amp;find_loc=San+Francisco%2C+CA                       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> SUMMARY:                                                                                                        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Best Coffee Roaster Near San Francisco, California · 1. Graffeo Coffee Roasting Company. 4.7 (196 reviews) · 2. <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Andytown Coffee Roasters. 4.5 (1.1k reviews) · 3.                                                               <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --------------------------------------------------------------------------------                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --- SOURCE 2: The Absolute Best San Francisco Coffee Shops - Eater SF ---                                       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> URL: https://sf.eater.com/maps/best-coffee-shops-san-francisco                                                  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> SUMMARY:                                                                                                        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;summary&gt;                                                                                                       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> San Francisco is globally renowned for its rich coffee culture, being the birthplace of influential coffee      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> trends and establishments such as Wrecking Ball Coffee, which introduced the \"waves of coffee\" terminology. The <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> city has embraced diverse coffee styles, notably Yemeni coffee promoted by figures like Mokhtar Alkhanshali of  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Port of Mokha and Delah Coffee House. Traditional coffee culture landmarks include the origin of Irish Coffee   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> and early Italian espresso influence. The latest list of the 16 best coffee shops in San Francisco reflects     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> dynamic changes, with new additions like Caffe Trieste, the Coffee Movement at Side A, and Cafe Shoji replacing <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> others. These shops are celebrated for their expertly brewed coffee, unique beverages, and community-oriented   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> atmospheres.                                                                                                    <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Highlighted coffee shops include:                                                                               <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Saint Frank Coffee: Known for its minimal aesthetic, high-quality Bolivian coffees, and expansion with new    <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> locations including Juniper and SoMa.                                                                           <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Outset Coffee: Innovators of fruit-infused coffee drinks like their Ethiopian coffee Americano with orange    <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> juice and jasmine tea.                                                                                          <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Scullery: Specialty coffee serving East Bay’s Mother Tongue Coffee, offering quality fare in the Tenderloin   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> area.                                                                                                           <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Sextant Coffee Roasters: Emphasizes direct relationships with Ethiopian, Kenyan, and Colombian growers, with  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> notable expansion.                                                                                              <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Telescope Coffee: Offers creative seasonal drinks and a unique atmosphere in SoMa.                            <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Abanico Coffee Roasters: A Latino-owned Mission District shop with Latin American coffee influences.          <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - SPRO - Mission Dolores/Castro: Creative coffee concoctions including a Cold Fashioned cold brew cocktail.     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Grand Coffee: Established 11 years ago with a second location, serving Mission Street with specialty brews.   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Hey Neighbor Cafe: Bayview’s cozy shop famed for quality beans and a unique mascot, a co-owner's cat.         <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Excelsior Coffee: A Black and brown-owned specialty coffee shop known for its strong roasts and chai.         <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Andytown Coffee Roasters: West side favorite with Guatemalan espresso and seasonal affogatos.                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Hi NRG: A pop-up with Hong Kong-inspired lattes and vibrant cultural energy.                                  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Paper Son: Merges Asian American heritage with coffee innovation; known for espresso passionfruit tonic.      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Shoji: A trendy SoMa venue offering both coffee and award-winning tea, with coffee from MAME roasters.        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Caffe Trieste: A historic North Beach landmark linked to cultural icons and dark, sweet espresso.             <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - The Coffee Movement at Side A: Collaborative coffee and doughnut spot with a relaxed atmosphere.              <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> The list reflects San Francisco’s coffee evolution encompassing heritage, diversity, and innovative approaches  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> to beverage crafting, underscoring the city’s ongoing influence in the global coffee scene.                     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;/summary&gt;                                                                                                      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;key_excerpts&gt;                                                                                                  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> \"San Francisco is and has been for many the world over the summit of coffee culture.\", \"It’s the birthplace of  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Wrecking Ball Coffee, where Trish Rothgeb introduced the 'waves of coffee' terminology and changed the industry <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> forever.\", \"These 16 coffee shops keep the torch burning, making those great ascents into the future.\", \"Saint  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Frank is to San Francisco coffee as Dungeness crab is to San Francisco restaurants.\", \"Outset on Valencia and   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> New Montgomery streets takes the form to the next level.\", \"Sextant founder Kinani Ahmed works directly with    <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Ethiopian, Kenyan, and Colombian growers, making high-end but affordable beans to-go.\", \"Paper Son pop-up is a  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> crowning achievement in the city’s vast coffee game, merging his Asian American heritage with his top-tier      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> espresso and pour-over skills.\", \"Caffe Trieste is indeed one of the touchstones for Godfather fans... The      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> coffee won’t blow your mind; it’s dark as midnight and sweet as sin, as it’s been written.\"                     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;/key_excerpts&gt;                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --------------------------------------------------------------------------------                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --- SOURCE 3: Recently moved to San Francisco, looking for good coffee place ... ---                            <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> URL: https://www.reddit.com/r/AskSF/comments/1di0g1l/recently_moved_to_san_francisco_looking_for_good/          <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> SUMMARY:                                                                                                        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Personally, Coffee Movement and St. Frank are my favs with Sightglass and Ritual being the more “chain” backup  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> (read: you can always find one of                                                                               <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --------------------------------------------------------------------------------                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[33m╭─\u001b[0m\u001b[33m───────────────────────────────────────────────\u001b[0m\u001b[33m 🔧 Tool Output \u001b[0m\u001b[33m────────────────────────────────────────────────\u001b[0m\u001b[33m─╮\u001b[0m\n",
       "\u001b[33m│\u001b[0m Search results:                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --- SOURCE 1: Best Coffee Roaster San Francisco, CA - Last Updated August 2025 ---                              \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m URL: https://m.yelp.com/search?find_desc=Best+Coffee+Roaster&find_loc=San+Francisco%2C+CA                       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m SUMMARY:                                                                                                        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Best Coffee Roaster Near San Francisco, California · 1. Graffeo Coffee Roasting Company. 4.7 (196 reviews) · 2. \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Andytown Coffee Roasters. 4.5 (1.1k reviews) · 3.                                                               \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --------------------------------------------------------------------------------                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --- SOURCE 2: The Absolute Best San Francisco Coffee Shops - Eater SF ---                                       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m URL: https://sf.eater.com/maps/best-coffee-shops-san-francisco                                                  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m SUMMARY:                                                                                                        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m <summary>                                                                                                       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m San Francisco is globally renowned for its rich coffee culture, being the birthplace of influential coffee      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m trends and establishments such as Wrecking Ball Coffee, which introduced the \"waves of coffee\" terminology. The \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m city has embraced diverse coffee styles, notably Yemeni coffee promoted by figures like Mokhtar Alkhanshali of  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Port of Mokha and Delah Coffee House. Traditional coffee culture landmarks include the origin of Irish Coffee   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m and early Italian espresso influence. The latest list of the 16 best coffee shops in San Francisco reflects     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m dynamic changes, with new additions like Caffe Trieste, the Coffee Movement at Side A, and Cafe Shoji replacing \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m others. These shops are celebrated for their expertly brewed coffee, unique beverages, and community-oriented   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m atmospheres.                                                                                                    \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Highlighted coffee shops include:                                                                               \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Saint Frank Coffee: Known for its minimal aesthetic, high-quality Bolivian coffees, and expansion with new    \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m locations including Juniper and SoMa.                                                                           \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Outset Coffee: Innovators of fruit-infused coffee drinks like their Ethiopian coffee Americano with orange    \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m juice and jasmine tea.                                                                                          \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Scullery: Specialty coffee serving East Bay’s Mother Tongue Coffee, offering quality fare in the Tenderloin   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m area.                                                                                                           \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Sextant Coffee Roasters: Emphasizes direct relationships with Ethiopian, Kenyan, and Colombian growers, with  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m notable expansion.                                                                                              \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Telescope Coffee: Offers creative seasonal drinks and a unique atmosphere in SoMa.                            \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Abanico Coffee Roasters: A Latino-owned Mission District shop with Latin American coffee influences.          \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - SPRO - Mission Dolores/Castro: Creative coffee concoctions including a Cold Fashioned cold brew cocktail.     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Grand Coffee: Established 11 years ago with a second location, serving Mission Street with specialty brews.   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Hey Neighbor Cafe: Bayview’s cozy shop famed for quality beans and a unique mascot, a co-owner's cat.         \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Excelsior Coffee: A Black and brown-owned specialty coffee shop known for its strong roasts and chai.         \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Andytown Coffee Roasters: West side favorite with Guatemalan espresso and seasonal affogatos.                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Hi NRG: A pop-up with Hong Kong-inspired lattes and vibrant cultural energy.                                  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Paper Son: Merges Asian American heritage with coffee innovation; known for espresso passionfruit tonic.      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Shoji: A trendy SoMa venue offering both coffee and award-winning tea, with coffee from MAME roasters.        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Caffe Trieste: A historic North Beach landmark linked to cultural icons and dark, sweet espresso.             \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - The Coffee Movement at Side A: Collaborative coffee and doughnut spot with a relaxed atmosphere.              \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m The list reflects San Francisco’s coffee evolution encompassing heritage, diversity, and innovative approaches  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m to beverage crafting, underscoring the city’s ongoing influence in the global coffee scene.                     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m </summary>                                                                                                      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m <key_excerpts>                                                                                                  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m \"San Francisco is and has been for many the world over the summit of coffee culture.\", \"It’s the birthplace of  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Wrecking Ball Coffee, where Trish Rothgeb introduced the 'waves of coffee' terminology and changed the industry \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m forever.\", \"These 16 coffee shops keep the torch burning, making those great ascents into the future.\", \"Saint  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Frank is to San Francisco coffee as Dungeness crab is to San Francisco restaurants.\", \"Outset on Valencia and   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m New Montgomery streets takes the form to the next level.\", \"Sextant founder Kinani Ahmed works directly with    \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Ethiopian, Kenyan, and Colombian growers, making high-end but affordable beans to-go.\", \"Paper Son pop-up is a  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m crowning achievement in the city’s vast coffee game, merging his Asian American heritage with his top-tier      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m espresso and pour-over skills.\", \"Caffe Trieste is indeed one of the touchstones for Godfather fans... The      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m coffee won’t blow your mind; it’s dark as midnight and sweet as sin, as it’s been written.\"                     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m </key_excerpts>                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --------------------------------------------------------------------------------                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --- SOURCE 3: Recently moved to San Francisco, looking for good coffee place ... ---                            \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m URL: https://www.reddit.com/r/AskSF/comments/1di0g1l/recently_moved_to_san_francisco_looking_for_good/          \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m SUMMARY:                                                                                                        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Personally, Coffee Movement and St. Frank are my favs with Sightglass and Ritual being the more “chain” backup  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m (read: you can always find one of                                                                               \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --------------------------------------------------------------------------------                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╭───────────────────────────────────────────────────── 📝 AI ─────────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> 🔧 Tool Call: think_tool                                                                                        <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>    Args: {                                                                                                      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>   \"reflection\": \"From this initial search, I've gathered some excellent information about San Francisco's top   <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> coffee shops with a focus on quality. Key findings:\\n\\n**High-Quality Coffee Shops Identified:**\\n1. Saint      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> Frank Coffee - described as \\\"to San Francisco coffee as Dungeness crab is to San Francisco restaurants\\\" -     <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> suggests exceptional quality and local significance\\n2. Sextant Coffee Roasters - works directly with           <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> Ethiopian, Kenyan, and Colombian growers for high-end but affordable beans\\n3. Andytown Coffee Roasters -       <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> highly rated (4.5 stars, 1.1k reviews) and mentioned as a \\\"West side favorite with Guatemalan espresso\\\"\\n4.   <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> Graffeo Coffee Roasting Company - highest rated (4.7 stars, 196 reviews) on Yelp\\n5. Outset Coffee - innovators <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> with fruit-infused coffee drinks using Ethiopian coffee\\n6. Paper Son - described as \\\"crowning achievement\\\"   <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> with top-tier espresso and pour-over skills\\n7. Sightglass and Ritual - mentioned as quality \\\"chain\\\"          <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> options\\n\\n**What I still need:**\\n- More specific information about coffee quality assessments from expert     <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> sources\\n- Information from specialty coffee organizations or professional reviews\\n- More detailed analysis of <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> what makes each shop's coffee quality exceptional\\n- Customer feedback specifically about coffee quality rather <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> than general atmosphere\\n- Any specialty coffee certifications or awards\\n\\nI should search for more expert     <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> reviews and specialty coffee industry recognition next.\"                                                        <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> }                                                                                                               <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>    ID: toolu_01NqrUM8WxNUz1ZGtq6mWXe7                                                                           <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[37m╭─\u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m 📝 AI \u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m─╮\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m 🔧 Tool Call: think_tool                                                                                        \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m    Args: {                                                                                                      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m   \"reflection\": \"From this initial search, I've gathered some excellent information about San Francisco's top   \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m coffee shops with a focus on quality. Key findings:\\n\\n**High-Quality Coffee Shops Identified:**\\n1. Saint      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m Frank Coffee - described as \\\"to San Francisco coffee as Dungeness crab is to San Francisco restaurants\\\" -     \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m suggests exceptional quality and local significance\\n2. Sextant Coffee Roasters - works directly with           \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m Ethiopian, Kenyan, and Colombian growers for high-end but affordable beans\\n3. Andytown Coffee Roasters -       \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m highly rated (4.5 stars, 1.1k reviews) and mentioned as a \\\"West side favorite with Guatemalan espresso\\\"\\n4.   \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m Graffeo Coffee Roasting Company - highest rated (4.7 stars, 196 reviews) on Yelp\\n5. Outset Coffee - innovators \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m with fruit-infused coffee drinks using Ethiopian coffee\\n6. Paper Son - described as \\\"crowning achievement\\\"   \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m with top-tier espresso and pour-over skills\\n7. Sightglass and Ritual - mentioned as quality \\\"chain\\\"          \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m options\\n\\n**What I still need:**\\n- More specific information about coffee quality assessments from expert     \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m sources\\n- Information from specialty coffee organizations or professional reviews\\n- More detailed analysis of \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m what makes each shop's coffee quality exceptional\\n- Customer feedback specifically about coffee quality rather \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m than general atmosphere\\n- Any specialty coffee certifications or awards\\n\\nI should search for more expert     \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m reviews and specialty coffee industry recognition next.\"                                                        \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m }                                                                                                               \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m    ID: toolu_01NqrUM8WxNUz1ZGtq6mWXe7                                                                           \u001b[37m│\u001b[0m\n",
       "\u001b[37m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #808000; text-decoration-color: #808000\">╭──────────────────────────────────────────────── 🔧 Tool Output ─────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Reflection recorded: From this initial search, I've gathered some excellent information about San Francisco's   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> top coffee shops with a focus on quality. Key findings:                                                         <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> **High-Quality Coffee Shops Identified:**                                                                       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> 1. Saint Frank Coffee - described as \"to San Francisco coffee as Dungeness crab is to San Francisco             <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> restaurants\" - suggests exceptional quality and local significance                                              <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> 2. Sextant Coffee Roasters - works directly with Ethiopian, Kenyan, and Colombian growers for high-end but      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> affordable beans                                                                                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> 3. Andytown Coffee Roasters - highly rated (4.5 stars, 1.1k reviews) and mentioned as a \"West side favorite     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> with Guatemalan espresso\"                                                                                       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> 4. Graffeo Coffee Roasting Company - highest rated (4.7 stars, 196 reviews) on Yelp                             <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> 5. Outset Coffee - innovators with fruit-infused coffee drinks using Ethiopian coffee                           <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> 6. Paper Son - described as \"crowning achievement\" with top-tier espresso and pour-over skills                  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> 7. Sightglass and Ritual - mentioned as quality \"chain\" options                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> **What I still need:**                                                                                          <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - More specific information about coffee quality assessments from expert sources                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Information from specialty coffee organizations or professional reviews                                       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - More detailed analysis of what makes each shop's coffee quality exceptional                                   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Customer feedback specifically about coffee quality rather than general atmosphere                            <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Any specialty coffee certifications or awards                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> I should search for more expert reviews and specialty coffee industry recognition next.                         <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[33m╭─\u001b[0m\u001b[33m───────────────────────────────────────────────\u001b[0m\u001b[33m 🔧 Tool Output \u001b[0m\u001b[33m────────────────────────────────────────────────\u001b[0m\u001b[33m─╮\u001b[0m\n",
       "\u001b[33m│\u001b[0m Reflection recorded: From this initial search, I've gathered some excellent information about San Francisco's   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m top coffee shops with a focus on quality. Key findings:                                                         \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m **High-Quality Coffee Shops Identified:**                                                                       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m 1. Saint Frank Coffee - described as \"to San Francisco coffee as Dungeness crab is to San Francisco             \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m restaurants\" - suggests exceptional quality and local significance                                              \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m 2. Sextant Coffee Roasters - works directly with Ethiopian, Kenyan, and Colombian growers for high-end but      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m affordable beans                                                                                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m 3. Andytown Coffee Roasters - highly rated (4.5 stars, 1.1k reviews) and mentioned as a \"West side favorite     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m with Guatemalan espresso\"                                                                                       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m 4. Graffeo Coffee Roasting Company - highest rated (4.7 stars, 196 reviews) on Yelp                             \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m 5. Outset Coffee - innovators with fruit-infused coffee drinks using Ethiopian coffee                           \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m 6. Paper Son - described as \"crowning achievement\" with top-tier espresso and pour-over skills                  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m 7. Sightglass and Ritual - mentioned as quality \"chain\" options                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m **What I still need:**                                                                                          \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - More specific information about coffee quality assessments from expert sources                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Information from specialty coffee organizations or professional reviews                                       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - More detailed analysis of what makes each shop's coffee quality exceptional                                   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Customer feedback specifically about coffee quality rather than general atmosphere                            \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Any specialty coffee certifications or awards                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m I should search for more expert reviews and specialty coffee industry recognition next.                         \u001b[33m│\u001b[0m\n",
       "\u001b[33m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╭───────────────────────────────────────────────────── 📝 AI ─────────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> 🔧 Tool Call: tavily_search                                                                                     <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>    Args: {                                                                                                      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>   \"query\": \"San Francisco coffee shops specialty coffee association awards Coffee Review ratings Saint Frank    <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> Sextant Andytown\"                                                                                               <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> }                                                                                                               <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>    ID: toolu_01JcXzDq9TAxbVW9T7J3W41B                                                                           <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[37m╭─\u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m 📝 AI \u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m─╮\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m 🔧 Tool Call: tavily_search                                                                                     \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m    Args: {                                                                                                      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m   \"query\": \"San Francisco coffee shops specialty coffee association awards Coffee Review ratings Saint Frank    \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m Sextant Andytown\"                                                                                               \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m }                                                                                                               \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m    ID: toolu_01JcXzDq9TAxbVW9T7J3W41B                                                                           \u001b[37m│\u001b[0m\n",
       "\u001b[37m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #808000; text-decoration-color: #808000\">╭──────────────────────────────────────────────── 🔧 Tool Output ─────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Search results:                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --- SOURCE 1: TOP 10 BEST Coffee Houses in San Francisco, CA - Yelp ---                                         <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> URL: https://www.yelp.com/search?find_desc=Coffee+Houses&amp;find_loc=San+Francisco%2C+CA                           <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> SUMMARY:                                                                                                        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> 1. Sightglass Coffee 4.0 (2.1k reviews) 1.9 mi $$ Good coffee, not great. This is a very busy coffee house,     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> with another counter on the second floor.                                                                       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --------------------------------------------------------------------------------                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --- SOURCE 2: The Absolute Best San Francisco Coffee Shops - Eater SF ---                                       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> URL: https://sf.eater.com/maps/best-coffee-shops-san-francisco                                                  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> SUMMARY:                                                                                                        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;summary&gt;                                                                                                       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> San Francisco is renowned globally as a pinnacle of coffee culture, being the birthplace of key innovations and <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> terminology such as the \"waves of coffee\" by Trish Rothgeb of Wrecking Ball Coffee. The city introduced Yemeni  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> coffee to the West Coast through notable cafes like Port of Mokha and Delah Coffee House. It is also            <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> historically significant for the creation of the Irish Coffee and the popularization of Italian espresso        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> culture in the U.S., along with the invention of vacuum-sealed coffee. This article highlights 16 of the best   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> coffee shops currently sustaining San Francisco's coffee legacy. Notable shops include Saint Frank Coffee,      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> known for Bolivian coffee and stylish service with multiple locations; Outset Coffee, specializing in           <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> innovative fruit coffee drinks; The Scullery, offering East Bay's Mother Tongue coffee and quality toast in     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Tenderloin; Sextant Coffee Roasters, whose founder collaborates directly with growers and offers affordable     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> high-end beans; Telescope Coffee in SoMa, featuring unique seasonal drinks like honeycomb lattes and signature  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> strawberry milk; Abanico Coffee Roasters in the Mission with El Salvadoran influences and specialty drinks;     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> SPRO with inventive mixed coffee cocktails and multiple city locations; Grand Coffee with a new spacious        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> location and quality Chemex brews; Hey Neighbor Cafe in Bayview, popular for its toast and ties to local bakery <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Rize Up; Excelsior Coffee, a Black and brown-owned shop providing strong but balanced roasts; Andytown Coffee   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Roasters, beloved on the west side with Guatemalan espresso and signature affogatos; Hi NRG, a pop-up offering  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Hong Kong-inspired lattes; Paper Son, merging Asian American heritage with innovative espresso drinks; Shoji,   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> known for high-quality tea and coffee service by award-winning baristas; Caffe Trieste, famed for its vintage   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> coffee culture and ties to film history; and The Coffee Movement at Side A, combining coffee with doughnuts and <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> soft serve in a relaxed setting. The list reflects recent updates with some shops removed and others added,     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> demonstrating San Francisco's evolving but enduring coffee scene.                                               <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;/summary&gt;                                                                                                      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;key_excerpts&gt;                                                                                                  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> \"San Francisco is and has been for many the world over the summit of coffee culture.\", \"It’s the birthplace of  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Wrecking Ball Coffee, where Trish Rothgeb introduced the 'waves of coffee' terminology and changed the industry <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> forever.\", \"Outset Americano is a medley of Ethiopian coffee plus not-from-concentrate orange juice, jasmine    <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> green tea, and orange syrup.\", \"Sextant founder Kinani Ahmed works directly with Ethiopian, Kenyan, and         <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Colombian growers, making high-end but affordable beans to-go.\", \"SPRO is known for its playful and inventive   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> coffee drinks, including the Cold Fashioned, a cold brew mixed with orange bitters and gum syrup topped with a  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Luxardo cherry and flamed orange twist.\"                                                                        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;/key_excerpts&gt;                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --------------------------------------------------------------------------------                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --- SOURCE 3: Battle of SF Coffee 2025☕ : r/sanfrancisco - Reddit ---                                          <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> URL: https://www.reddit.com/r/sanfrancisco/comments/1li7ro2/battle_of_sf_coffee_2025/                           <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> SUMMARY:                                                                                                        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;summary&gt;                                                                                                       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> The webpage is a Reddit post from the r/sanfrancisco community titled \"Battle of SF Coffee 2025☕️🏆,\" initiated <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> by user SoundsByEYE approximately 16 days ago. The post is designed as a community-driven event to identify the <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> best coffee shops in San Francisco for the year 2025. It invites members to participate by upvoting their       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> favorite coffee spots listed in the thread, adding new coffee shop recommendations not already mentioned, and   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> sharing opinions or notes on quality and offerings. The goal is to foster engagement within the San Francisco   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> community to discover and celebrate the city's top coffee venues through collective input and voting.           <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;/summary&gt;                                                                                                      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;key_excerpts&gt;                                                                                                  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Battle of SF Coffee 2025☕️🏆, This should be fun and a great way to try some new spots and see what the         <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> consensus is in the city!, Here are the guidelines: 1. Check to see if your spot is in the thread first. Upvote <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> your favorite coffee shops in the thread; 2. Comment your favorite SF coffee spots that have not been posted.   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> If you have thoughts on that spot drop it in that comment thread 🔑; 3. Upvote the other spots you              <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> like/Downvote the spots you think could be better., May the best coffee win! ☕️ 🏆                              <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;/key_excerpts&gt;                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --------------------------------------------------------------------------------                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[33m╭─\u001b[0m\u001b[33m───────────────────────────────────────────────\u001b[0m\u001b[33m 🔧 Tool Output \u001b[0m\u001b[33m────────────────────────────────────────────────\u001b[0m\u001b[33m─╮\u001b[0m\n",
       "\u001b[33m│\u001b[0m Search results:                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --- SOURCE 1: TOP 10 BEST Coffee Houses in San Francisco, CA - Yelp ---                                         \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m URL: https://www.yelp.com/search?find_desc=Coffee+Houses&find_loc=San+Francisco%2C+CA                           \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m SUMMARY:                                                                                                        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m 1. Sightglass Coffee 4.0 (2.1k reviews) 1.9 mi $$ Good coffee, not great. This is a very busy coffee house,     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m with another counter on the second floor.                                                                       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --------------------------------------------------------------------------------                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --- SOURCE 2: The Absolute Best San Francisco Coffee Shops - Eater SF ---                                       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m URL: https://sf.eater.com/maps/best-coffee-shops-san-francisco                                                  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m SUMMARY:                                                                                                        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m <summary>                                                                                                       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m San Francisco is renowned globally as a pinnacle of coffee culture, being the birthplace of key innovations and \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m terminology such as the \"waves of coffee\" by Trish Rothgeb of Wrecking Ball Coffee. The city introduced Yemeni  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m coffee to the West Coast through notable cafes like Port of Mokha and Delah Coffee House. It is also            \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m historically significant for the creation of the Irish Coffee and the popularization of Italian espresso        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m culture in the U.S., along with the invention of vacuum-sealed coffee. This article highlights 16 of the best   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m coffee shops currently sustaining San Francisco's coffee legacy. Notable shops include Saint Frank Coffee,      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m known for Bolivian coffee and stylish service with multiple locations; Outset Coffee, specializing in           \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m innovative fruit coffee drinks; The Scullery, offering East Bay's Mother Tongue coffee and quality toast in     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Tenderloin; Sextant Coffee Roasters, whose founder collaborates directly with growers and offers affordable     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m high-end beans; Telescope Coffee in SoMa, featuring unique seasonal drinks like honeycomb lattes and signature  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m strawberry milk; Abanico Coffee Roasters in the Mission with El Salvadoran influences and specialty drinks;     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m SPRO with inventive mixed coffee cocktails and multiple city locations; Grand Coffee with a new spacious        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m location and quality Chemex brews; Hey Neighbor Cafe in Bayview, popular for its toast and ties to local bakery \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Rize Up; Excelsior Coffee, a Black and brown-owned shop providing strong but balanced roasts; Andytown Coffee   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Roasters, beloved on the west side with Guatemalan espresso and signature affogatos; Hi NRG, a pop-up offering  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Hong Kong-inspired lattes; Paper Son, merging Asian American heritage with innovative espresso drinks; Shoji,   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m known for high-quality tea and coffee service by award-winning baristas; Caffe Trieste, famed for its vintage   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m coffee culture and ties to film history; and The Coffee Movement at Side A, combining coffee with doughnuts and \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m soft serve in a relaxed setting. The list reflects recent updates with some shops removed and others added,     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m demonstrating San Francisco's evolving but enduring coffee scene.                                               \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m </summary>                                                                                                      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m <key_excerpts>                                                                                                  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m \"San Francisco is and has been for many the world over the summit of coffee culture.\", \"It’s the birthplace of  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Wrecking Ball Coffee, where Trish Rothgeb introduced the 'waves of coffee' terminology and changed the industry \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m forever.\", \"Outset Americano is a medley of Ethiopian coffee plus not-from-concentrate orange juice, jasmine    \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m green tea, and orange syrup.\", \"Sextant founder Kinani Ahmed works directly with Ethiopian, Kenyan, and         \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Colombian growers, making high-end but affordable beans to-go.\", \"SPRO is known for its playful and inventive   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m coffee drinks, including the Cold Fashioned, a cold brew mixed with orange bitters and gum syrup topped with a  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Luxardo cherry and flamed orange twist.\"                                                                        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m </key_excerpts>                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --------------------------------------------------------------------------------                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --- SOURCE 3: Battle of SF Coffee 2025☕ : r/sanfrancisco - Reddit ---                                          \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m URL: https://www.reddit.com/r/sanfrancisco/comments/1li7ro2/battle_of_sf_coffee_2025/                           \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m SUMMARY:                                                                                                        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m <summary>                                                                                                       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m The webpage is a Reddit post from the r/sanfrancisco community titled \"Battle of SF Coffee 2025☕️🏆,\" initiated \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m by user SoundsByEYE approximately 16 days ago. The post is designed as a community-driven event to identify the \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m best coffee shops in San Francisco for the year 2025. It invites members to participate by upvoting their       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m favorite coffee spots listed in the thread, adding new coffee shop recommendations not already mentioned, and   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m sharing opinions or notes on quality and offerings. The goal is to foster engagement within the San Francisco   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m community to discover and celebrate the city's top coffee venues through collective input and voting.           \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m </summary>                                                                                                      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m <key_excerpts>                                                                                                  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Battle of SF Coffee 2025☕️🏆, This should be fun and a great way to try some new spots and see what the         \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m consensus is in the city!, Here are the guidelines: 1. Check to see if your spot is in the thread first. Upvote \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m your favorite coffee shops in the thread; 2. Comment your favorite SF coffee spots that have not been posted.   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m If you have thoughts on that spot drop it in that comment thread 🔑; 3. Upvote the other spots you              \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m like/Downvote the spots you think could be better., May the best coffee win! ☕️ 🏆                              \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m </key_excerpts>                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --------------------------------------------------------------------------------                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╭───────────────────────────────────────────────────── 📝 AI ─────────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> 🔧 Tool Call: think_tool                                                                                        <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>    Args: {                                                                                                      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>   \"reflection\": \"The second search provided additional context but didn't yield the specific expert reviews or  <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> specialty coffee organization ratings I was hoping for. However, I did find:\\n\\n**Additional Quality            <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> Indicators:**\\n- Sightglass Coffee appears with 4.0 stars (2.1k reviews) but noted as \\\"Good coffee, not        <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> great\\\" - this suggests it may not be top-tier for quality\\n- The Reddit \\\"Battle of SF Coffee 2025\\\" post      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> could have community insights but I need to search for more specific results from that discussion\\n\\n**Current  <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> Top Contenders Based on Quality Indicators:**\\n1. **Saint Frank Coffee** - consistently mentioned as premium    <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> quality\\n2. **Sextant Coffee Roasters** - direct trade relationships suggest quality sourcing\\n3. **Andytown    <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> Coffee Roasters** - high ratings and specialty Guatemalan espresso\\n4. **Graffeo Coffee Roasting Company** -    <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> highest Yelp rating (4.7/5)\\n5. **Paper Son** - described as \\\"crowning achievement\\\" with top-tier skills\\n6.  <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> **Outset Coffee** - innovative Ethiopian coffee preparations\\n\\n**Still Missing:**\\n- Official coffee industry  <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> awards or certifications\\n- Detailed customer reviews specifically about coffee quality\\n- Expert coffee        <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> reviewer ratings\\n- More specific information about roasting practices and bean sourcing\\n\\nI should search for <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> more detailed reviews and specific coffee quality assessments from customers and experts.\"                      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> }                                                                                                               <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>    ID: toolu_01KeuDYpWJxPzx8JXDLXVXzC                                                                           <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[37m╭─\u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m 📝 AI \u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m─╮\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m 🔧 Tool Call: think_tool                                                                                        \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m    Args: {                                                                                                      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m   \"reflection\": \"The second search provided additional context but didn't yield the specific expert reviews or  \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m specialty coffee organization ratings I was hoping for. However, I did find:\\n\\n**Additional Quality            \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m Indicators:**\\n- Sightglass Coffee appears with 4.0 stars (2.1k reviews) but noted as \\\"Good coffee, not        \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m great\\\" - this suggests it may not be top-tier for quality\\n- The Reddit \\\"Battle of SF Coffee 2025\\\" post      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m could have community insights but I need to search for more specific results from that discussion\\n\\n**Current  \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m Top Contenders Based on Quality Indicators:**\\n1. **Saint Frank Coffee** - consistently mentioned as premium    \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m quality\\n2. **Sextant Coffee Roasters** - direct trade relationships suggest quality sourcing\\n3. **Andytown    \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m Coffee Roasters** - high ratings and specialty Guatemalan espresso\\n4. **Graffeo Coffee Roasting Company** -    \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m highest Yelp rating (4.7/5)\\n5. **Paper Son** - described as \\\"crowning achievement\\\" with top-tier skills\\n6.  \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m **Outset Coffee** - innovative Ethiopian coffee preparations\\n\\n**Still Missing:**\\n- Official coffee industry  \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m awards or certifications\\n- Detailed customer reviews specifically about coffee quality\\n- Expert coffee        \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m reviewer ratings\\n- More specific information about roasting practices and bean sourcing\\n\\nI should search for \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m more detailed reviews and specific coffee quality assessments from customers and experts.\"                      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m }                                                                                                               \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m    ID: toolu_01KeuDYpWJxPzx8JXDLXVXzC                                                                           \u001b[37m│\u001b[0m\n",
       "\u001b[37m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #808000; text-decoration-color: #808000\">╭──────────────────────────────────────────────── 🔧 Tool Output ─────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Reflection recorded: The second search provided additional context but didn't yield the specific expert reviews <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> or specialty coffee organization ratings I was hoping for. However, I did find:                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> **Additional Quality Indicators:**                                                                              <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Sightglass Coffee appears with 4.0 stars (2.1k reviews) but noted as \"Good coffee, not great\" - this suggests <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> it may not be top-tier for quality                                                                              <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - The Reddit \"Battle of SF Coffee 2025\" post could have community insights but I need to search for more        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> specific results from that discussion                                                                           <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> **Current Top Contenders Based on Quality Indicators:**                                                         <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> 1. **Saint Frank Coffee** - consistently mentioned as premium quality                                           <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> 2. **Sextant Coffee Roasters** - direct trade relationships suggest quality sourcing                            <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> 3. **Andytown Coffee Roasters** - high ratings and specialty Guatemalan espresso                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> 4. **Graffeo Coffee Roasting Company** - highest Yelp rating (4.7/5)                                            <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> 5. **Paper Son** - described as \"crowning achievement\" with top-tier skills                                     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> 6. **Outset Coffee** - innovative Ethiopian coffee preparations                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> **Still Missing:**                                                                                              <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Official coffee industry awards or certifications                                                             <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Detailed customer reviews specifically about coffee quality                                                   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Expert coffee reviewer ratings                                                                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - More specific information about roasting practices and bean sourcing                                          <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> I should search for more detailed reviews and specific coffee quality assessments from customers and experts.   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[33m╭─\u001b[0m\u001b[33m───────────────────────────────────────────────\u001b[0m\u001b[33m 🔧 Tool Output \u001b[0m\u001b[33m────────────────────────────────────────────────\u001b[0m\u001b[33m─╮\u001b[0m\n",
       "\u001b[33m│\u001b[0m Reflection recorded: The second search provided additional context but didn't yield the specific expert reviews \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m or specialty coffee organization ratings I was hoping for. However, I did find:                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m **Additional Quality Indicators:**                                                                              \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Sightglass Coffee appears with 4.0 stars (2.1k reviews) but noted as \"Good coffee, not great\" - this suggests \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m it may not be top-tier for quality                                                                              \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - The Reddit \"Battle of SF Coffee 2025\" post could have community insights but I need to search for more        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m specific results from that discussion                                                                           \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m **Current Top Contenders Based on Quality Indicators:**                                                         \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m 1. **Saint Frank Coffee** - consistently mentioned as premium quality                                           \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m 2. **Sextant Coffee Roasters** - direct trade relationships suggest quality sourcing                            \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m 3. **Andytown Coffee Roasters** - high ratings and specialty Guatemalan espresso                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m 4. **Graffeo Coffee Roasting Company** - highest Yelp rating (4.7/5)                                            \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m 5. **Paper Son** - described as \"crowning achievement\" with top-tier skills                                     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m 6. **Outset Coffee** - innovative Ethiopian coffee preparations                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m **Still Missing:**                                                                                              \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Official coffee industry awards or certifications                                                             \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Detailed customer reviews specifically about coffee quality                                                   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Expert coffee reviewer ratings                                                                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - More specific information about roasting practices and bean sourcing                                          \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m I should search for more detailed reviews and specific coffee quality assessments from customers and experts.   \u001b[33m│\u001b[0m\n",
       "\u001b[33m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╭───────────────────────────────────────────────────── 📝 AI ─────────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> 🔧 Tool Call: tavily_search                                                                                     <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>    Args: {                                                                                                      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>   \"query\": \"\\\"Saint Frank Coffee\\\" \\\"Sextant Coffee\\\" \\\"Andytown Coffee\\\" San Francisco coffee quality reviews  <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> roasting awards beans sourcing\"                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> }                                                                                                               <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>    ID: toolu_01YEVx3BLKeLVE9SbuDZKb7r                                                                           <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[37m╭─\u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m 📝 AI \u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m─╮\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m 🔧 Tool Call: tavily_search                                                                                     \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m    Args: {                                                                                                      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m   \"query\": \"\\\"Saint Frank Coffee\\\" \\\"Sextant Coffee\\\" \\\"Andytown Coffee\\\" San Francisco coffee quality reviews  \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m roasting awards beans sourcing\"                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m }                                                                                                               \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m    ID: toolu_01YEVx3BLKeLVE9SbuDZKb7r                                                                           \u001b[37m│\u001b[0m\n",
       "\u001b[37m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #808000; text-decoration-color: #808000\">╭──────────────────────────────────────────────── 🔧 Tool Output ─────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Search results:                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --- SOURCE 1: Yelp SAINT FRANK COFFEE - Updated August 2025 - 1279 Photos &amp; 1000 Reviews - 2340 Polk St, San    <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Francisco, California - Coffee &amp; Tea - Restaurant Reviews - Phone Number - Menu - Yelp ---                      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> URL: https://www.yelp.com/biz/saint-frank-coffee-san-francisco-2                                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> SUMMARY:                                                                                                        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;summary&gt;                                                                                                       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Saint Frank Coffee is a popular coffee and tea shop located at 2340 Polk St, San Francisco, CA, in the Russian  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Hill neighborhood. It specializes in coffee and breakfast/brunch items, operating daily from 7:00 AM to 6:00    <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> PM. The café boasts a 4.3-star rating based on 996 reviews and has a considerable photo gallery showcasing its  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> offerings and ambiance. The menu features popular drinks like the House Almond Macadamia Milk, Honey Lavender   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Latte, Orange Cream Latte, Macadamia Nut Milk, and various lattes and cold brews. The establishment is          <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> described as hipster, trendy, classy yet casual, and suitable for working. It offers take-out, takes            <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> reservations, has vegan options, and is wheelchair accessible. Customers have noted the presence of outdoor     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> seating. The business can be contacted at (415) 881-8062 and maintains a website at saintfrankcoffee.com.       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;/summary&gt;                                                                                                      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;key_excerpts&gt;                                                                                                  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Saint Frank Coffee is a coffee and tea shop located at 2340 Polk St, San Francisco, California. 4.3-star rating <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> based on 996 reviews. Open daily from 7:00 AM to 6:00 PM. Popular drinks include House Almond Macadamia Milk,   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Honey Lavender Latte, Orange Cream Latte, and various specialty lattes. The café offers take-out, takes         <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> reservations, has vegan options, and is wheelchair accessible. The vibe is hipster, trendy, casual, and good    <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> for working. Outdoor seating is available.                                                                      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;/key_excerpts&gt;                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --------------------------------------------------------------------------------                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --- SOURCE 2: Tripadvisor SAINT FRANK COFFEE, San Francisco - 2340 Polk St, Polk Gulch - Restaurant Reviews &amp;   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Phone Number - Tripadvisor ---                                                                                  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> URL:                                                                                                            <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> https://www.tripadvisor.com/Restaurant_Review-g60713-d5209565-Reviews-Saint_Frank_Coffee-San_Francisco_Californ <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> ia.html                                                                                                         <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> SUMMARY:                                                                                                        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Saint Frank Coffee , San Francisco : See 68 unbiased reviews of Saint Frank Coffee , rated 4.4 of 5 on          <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Tripadvisor and ranked #649 of 3,345 restaurants in San Francisco .                                             <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --------------------------------------------------------------------------------                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --- SOURCE 3: Saint Frank Coffee - San Francisco ---                                                            <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> URL: https://www.saintfrankcoffee.com/                                                                          <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> SUMMARY:                                                                                                        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;summary&gt;                                                                                                       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Saint Frank Coffee is a San Francisco-based coffee company offering a variety of coffee products including      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> single origin, blends, and instant coffee. Their online store also includes merchandise, brewing gear, and gift <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> collections. The company emphasizes a concept called 'Relational Sourcing' and shares their story and values on <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> their website. Customers can subscribe to receive fresh coffee via a subscription service, with a promotion     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> offering a free bag of coffee for new subscribers. Saint Frank Coffee operates a physical location at 1604 17th <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Street, San Francisco, CA 94107, and provides contact options through email and phone. They also have a         <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> wholesale program and regularly update their customers through newsletters and a blog. The website offers       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> accessibility features such as screen-reader mode.                                                              <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;/summary&gt;                                                                                                      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;key_excerpts&gt;                                                                                                  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Sign up and we’ll send you fresh news and perspectives _and_ your first subscription bag free., Relational      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Sourcing, 1604 17th Street, San Francisco, CA 94107, Wholesale program available through the website            <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;/key_excerpts&gt;                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --------------------------------------------------------------------------------                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[33m╭─\u001b[0m\u001b[33m───────────────────────────────────────────────\u001b[0m\u001b[33m 🔧 Tool Output \u001b[0m\u001b[33m────────────────────────────────────────────────\u001b[0m\u001b[33m─╮\u001b[0m\n",
       "\u001b[33m│\u001b[0m Search results:                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --- SOURCE 1: Yelp SAINT FRANK COFFEE - Updated August 2025 - 1279 Photos & 1000 Reviews - 2340 Polk St, San    \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Francisco, California - Coffee & Tea - Restaurant Reviews - Phone Number - Menu - Yelp ---                      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m URL: https://www.yelp.com/biz/saint-frank-coffee-san-francisco-2                                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m SUMMARY:                                                                                                        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m <summary>                                                                                                       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Saint Frank Coffee is a popular coffee and tea shop located at 2340 Polk St, San Francisco, CA, in the Russian  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Hill neighborhood. It specializes in coffee and breakfast/brunch items, operating daily from 7:00 AM to 6:00    \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m PM. The café boasts a 4.3-star rating based on 996 reviews and has a considerable photo gallery showcasing its  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m offerings and ambiance. The menu features popular drinks like the House Almond Macadamia Milk, Honey Lavender   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Latte, Orange Cream Latte, Macadamia Nut Milk, and various lattes and cold brews. The establishment is          \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m described as hipster, trendy, classy yet casual, and suitable for working. It offers take-out, takes            \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m reservations, has vegan options, and is wheelchair accessible. Customers have noted the presence of outdoor     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m seating. The business can be contacted at (415) 881-8062 and maintains a website at saintfrankcoffee.com.       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m </summary>                                                                                                      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m <key_excerpts>                                                                                                  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Saint Frank Coffee is a coffee and tea shop located at 2340 Polk St, San Francisco, California. 4.3-star rating \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m based on 996 reviews. Open daily from 7:00 AM to 6:00 PM. Popular drinks include House Almond Macadamia Milk,   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Honey Lavender Latte, Orange Cream Latte, and various specialty lattes. The café offers take-out, takes         \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m reservations, has vegan options, and is wheelchair accessible. The vibe is hipster, trendy, casual, and good    \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m for working. Outdoor seating is available.                                                                      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m </key_excerpts>                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --------------------------------------------------------------------------------                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --- SOURCE 2: Tripadvisor SAINT FRANK COFFEE, San Francisco - 2340 Polk St, Polk Gulch - Restaurant Reviews &   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Phone Number - Tripadvisor ---                                                                                  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m URL:                                                                                                            \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m https://www.tripadvisor.com/Restaurant_Review-g60713-d5209565-Reviews-Saint_Frank_Coffee-San_Francisco_Californ \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m ia.html                                                                                                         \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m SUMMARY:                                                                                                        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Saint Frank Coffee , San Francisco : See 68 unbiased reviews of Saint Frank Coffee , rated 4.4 of 5 on          \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Tripadvisor and ranked #649 of 3,345 restaurants in San Francisco .                                             \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --------------------------------------------------------------------------------                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --- SOURCE 3: Saint Frank Coffee - San Francisco ---                                                            \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m URL: https://www.saintfrankcoffee.com/                                                                          \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m SUMMARY:                                                                                                        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m <summary>                                                                                                       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Saint Frank Coffee is a San Francisco-based coffee company offering a variety of coffee products including      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m single origin, blends, and instant coffee. Their online store also includes merchandise, brewing gear, and gift \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m collections. The company emphasizes a concept called 'Relational Sourcing' and shares their story and values on \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m their website. Customers can subscribe to receive fresh coffee via a subscription service, with a promotion     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m offering a free bag of coffee for new subscribers. Saint Frank Coffee operates a physical location at 1604 17th \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Street, San Francisco, CA 94107, and provides contact options through email and phone. They also have a         \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m wholesale program and regularly update their customers through newsletters and a blog. The website offers       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m accessibility features such as screen-reader mode.                                                              \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m </summary>                                                                                                      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m <key_excerpts>                                                                                                  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Sign up and we’ll send you fresh news and perspectives _and_ your first subscription bag free., Relational      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Sourcing, 1604 17th Street, San Francisco, CA 94107, Wholesale program available through the website            \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m </key_excerpts>                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --------------------------------------------------------------------------------                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╭───────────────────────────────────────────────────── 📝 AI ─────────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> 🔧 Tool Call: think_tool                                                                                        <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>    Args: {                                                                                                      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>   \"reflection\": \"Good progress! I now have more concrete information about Saint Frank Coffee:\\n\\n**Saint Frank <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> Coffee Quality Indicators:**\\n- 4.3-star rating on Yelp (996 reviews)\\n- 4.4-star rating on TripAdvisor (68     <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> reviews), ranked #649 of 3,345 restaurants in SF\\n- Emphasizes \\\"Relational Sourcing\\\" - suggests quality       <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> sourcing practices\\n- Multiple locations indicating success and growth\\n- Specialty drinks like Honey Lavender  <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> Latte and Orange Cream Latte\\n- Has wholesale program suggesting commercial success\\n\\n**Current                <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> Assessment:**\\nSaint Frank appears to be a high-quality operation with solid ratings and good sourcing          <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> practices. However, I still need more specific information about the other top contenders like Sextant,         <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> Andytown, and Graffeo. I should search for more detailed information about coffee quality assessments and       <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> customer feedback specifically about taste and coffee preparation quality.\\n\\n**Next Steps:**\\nI need one more  <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> targeted search to gather specific customer reviews about coffee quality and any additional expert assessments  <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> to provide a comprehensive ranking.\"                                                                            <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> }                                                                                                               <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>    ID: toolu_01DT4p3qmK7FZJ7bBK2kUhBP                                                                           <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[37m╭─\u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m 📝 AI \u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m─╮\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m 🔧 Tool Call: think_tool                                                                                        \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m    Args: {                                                                                                      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m   \"reflection\": \"Good progress! I now have more concrete information about Saint Frank Coffee:\\n\\n**Saint Frank \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m Coffee Quality Indicators:**\\n- 4.3-star rating on Yelp (996 reviews)\\n- 4.4-star rating on TripAdvisor (68     \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m reviews), ranked #649 of 3,345 restaurants in SF\\n- Emphasizes \\\"Relational Sourcing\\\" - suggests quality       \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m sourcing practices\\n- Multiple locations indicating success and growth\\n- Specialty drinks like Honey Lavender  \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m Latte and Orange Cream Latte\\n- Has wholesale program suggesting commercial success\\n\\n**Current                \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m Assessment:**\\nSaint Frank appears to be a high-quality operation with solid ratings and good sourcing          \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m practices. However, I still need more specific information about the other top contenders like Sextant,         \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m Andytown, and Graffeo. I should search for more detailed information about coffee quality assessments and       \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m customer feedback specifically about taste and coffee preparation quality.\\n\\n**Next Steps:**\\nI need one more  \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m targeted search to gather specific customer reviews about coffee quality and any additional expert assessments  \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m to provide a comprehensive ranking.\"                                                                            \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m }                                                                                                               \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m    ID: toolu_01DT4p3qmK7FZJ7bBK2kUhBP                                                                           \u001b[37m│\u001b[0m\n",
       "\u001b[37m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #808000; text-decoration-color: #808000\">╭──────────────────────────────────────────────── 🔧 Tool Output ─────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Reflection recorded: Good progress! I now have more concrete information about Saint Frank Coffee:              <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> **Saint Frank Coffee Quality Indicators:**                                                                      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - 4.3-star rating on Yelp (996 reviews)                                                                         <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - 4.4-star rating on TripAdvisor (68 reviews), ranked #649 of 3,345 restaurants in SF                           <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Emphasizes \"Relational Sourcing\" - suggests quality sourcing practices                                        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Multiple locations indicating success and growth                                                              <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Specialty drinks like Honey Lavender Latte and Orange Cream Latte                                             <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Has wholesale program suggesting commercial success                                                           <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> **Current Assessment:**                                                                                         <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Saint Frank appears to be a high-quality operation with solid ratings and good sourcing practices. However, I   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> still need more specific information about the other top contenders like Sextant, Andytown, and Graffeo. I      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> should search for more detailed information about coffee quality assessments and customer feedback specifically <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> about taste and coffee preparation quality.                                                                     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> **Next Steps:**                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> I need one more targeted search to gather specific customer reviews about coffee quality and any additional     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> expert assessments to provide a comprehensive ranking.                                                          <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[33m╭─\u001b[0m\u001b[33m───────────────────────────────────────────────\u001b[0m\u001b[33m 🔧 Tool Output \u001b[0m\u001b[33m────────────────────────────────────────────────\u001b[0m\u001b[33m─╮\u001b[0m\n",
       "\u001b[33m│\u001b[0m Reflection recorded: Good progress! I now have more concrete information about Saint Frank Coffee:              \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m **Saint Frank Coffee Quality Indicators:**                                                                      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - 4.3-star rating on Yelp (996 reviews)                                                                         \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - 4.4-star rating on TripAdvisor (68 reviews), ranked #649 of 3,345 restaurants in SF                           \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Emphasizes \"Relational Sourcing\" - suggests quality sourcing practices                                        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Multiple locations indicating success and growth                                                              \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Specialty drinks like Honey Lavender Latte and Orange Cream Latte                                             \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Has wholesale program suggesting commercial success                                                           \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m **Current Assessment:**                                                                                         \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Saint Frank appears to be a high-quality operation with solid ratings and good sourcing practices. However, I   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m still need more specific information about the other top contenders like Sextant, Andytown, and Graffeo. I      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m should search for more detailed information about coffee quality assessments and customer feedback specifically \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m about taste and coffee preparation quality.                                                                     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m **Next Steps:**                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m I need one more targeted search to gather specific customer reviews about coffee quality and any additional     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m expert assessments to provide a comprehensive ranking.                                                          \u001b[33m│\u001b[0m\n",
       "\u001b[33m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╭───────────────────────────────────────────────────── 📝 AI ─────────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> 🔧 Tool Call: tavily_search                                                                                     <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>    Args: {                                                                                                      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>   \"query\": \"Graffeo Coffee Roasting Company Andytown Coffee Sextant Coffee San Francisco customer reviews       <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> coffee taste quality beans espresso\"                                                                            <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> }                                                                                                               <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>    ID: toolu_01KkFmdMzwp3iX8DihJ58jgq                                                                           <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[37m╭─\u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m 📝 AI \u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m─╮\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m 🔧 Tool Call: tavily_search                                                                                     \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m    Args: {                                                                                                      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m   \"query\": \"Graffeo Coffee Roasting Company Andytown Coffee Sextant Coffee San Francisco customer reviews       \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m coffee taste quality beans espresso\"                                                                            \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m }                                                                                                               \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m    ID: toolu_01KkFmdMzwp3iX8DihJ58jgq                                                                           \u001b[37m│\u001b[0m\n",
       "\u001b[37m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #808000; text-decoration-color: #808000\">╭──────────────────────────────────────────────── 🔧 Tool Output ─────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Search results:                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --- SOURCE 1: Andytown Coffee Roasters | San Francisco Specialty Coffee ---                                     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> URL: https://andytownsf.com/?srsltid=AfmBOopIbJM2AWmflHO9G7nXAgj2Hv7rQUna8jIX1A9fPmD5qXJn5h3g                   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> SUMMARY:                                                                                                        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;summary&gt;                                                                                                       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Andytown Coffee Roasters is offering a 'Happy Fogust' promotion featuring 20% off all 5lb bags of coffee for    <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> online purchases. Free shipping is automatically applied to orders of $50 or more. Their coffee lineup includes <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> several single-origin coffees and blends such as Peru Satipo Finca Tasta, Burundi Kayanza Incuti, Indonesia     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Natural East Java Mount Ijen, Short Strand Blend, Wind &amp; Sea Blend, Cold Brew Blend, Shore Leave Hook Blend,    <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> and Decaf Guatemala Esquipulas. They emphasize sustainable practices as a certified California Green Business,  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> focusing on compostable packaging and ethical sourcing, support for local community hiring and events in San    <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Francisco, and high product quality through meticulous sourcing and small-batch roasting. The webpage also      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> highlights the fruit-forward natural coffee from the Ijen Highlands of East Java, Indonesia, where the volcanic <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> soil creates ideal coffee-growing conditions, with Kevenka Coffee as a key producer. Additional offerings       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> include brewing gear, merchandise, and a full café menu with coffee, pastries, and seasonal treats. Customers   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> can view menus and place orders online, and they can follow @ANDYTOWNSF on social media for monthly offers and  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> updates.                                                                                                        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;/summary&gt;                                                                                                      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;key_excerpts&gt;                                                                                                  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> \"Happy Fogust! 20% off 5lb bags of coffee online only.\", \"FREE Shipping automatically applied to orders $50 and <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> over.\", \"Andytown is a certified California Green Business committed to sustainability through compostable      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> packaging, energy efficiency, and ethical sourcing.\", \"Andytown supports our community through local hiring,    <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> inclusive spaces, neighborhood events, and partnerships that uplift San Francisco’s diverse, creative spirit.\", <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> \"Andytown is dedicated to quality through meticulous sourcing, small-batch roasting, skilled baristas, and      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> crafting every cup with care and consistency.\"                                                                  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;/key_excerpts&gt;                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --------------------------------------------------------------------------------                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --- SOURCE 2: GRAFFEO COFFEE ROASTING COMPANY - Updated ... ---                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> URL: https://www.yelp.com/biz/graffeo-coffee-roasting-company-san-francisco                                     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> SUMMARY:                                                                                                        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> This is the best coffee, freshly roasted, ground to your specificity, friendly customer service. And if not     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> local, they ship! Helpful                                                                                       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --------------------------------------------------------------------------------                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --- SOURCE 3: Graffeo Coffee ---                                                                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> URL: https://graffeo.com/?srsltid=AfmBOooR5Iosoe2hzeyTsbbZUiyGumR1Ei7BZMCSXI4gU-BV_xvwylFj                      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> SUMMARY:                                                                                                        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;summary&gt;                                                                                                       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Graffeo Coffee is a family-run artisan coffee roaster based in North Beach, operating since 1935 and committed  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> to producing what they consider the world's finest coffee. Their product lineup includes signature blends such  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> as Dark Roast, Light Roast, and Swiss Water Decaf — chemical-free decaffeinated coffee that maintains rich      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> flavor. The Dark Roast is smooth, rich, and full-bodied, offered at fine hotels and restaurants, while the      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Light Roast is a well-balanced coffee ideal for pour-over brewing. Their Gift Box offers a sampler of these     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> coffees with a brewing guide by coffee expert Wolfgang Klinker. The company prides itself on limited blends to  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> preserve quality and tradition, managed by Luciano Repetto, who continues roasting from the original North      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Beach storefront inherited from his father. Wholesale partnerships are available via direct contact. Graffeo    <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Coffee emphasizes both the art and science of roasting beans, maintaining a legacy passed through generations.  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;/summary&gt;                                                                                                      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;key_excerpts&gt;                                                                                                  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> “To me Graffeo Coffee is rich, full and never bitter.”, \"Our signature Graffeo roast. Smooth, rich and          <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> full-bodied. Served at some of the world’s finest hotels and restaurants.\", \"Chemical free, Swiss water process <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> preserves the flavor of the beans when roasting that impresses even ardent 'death before decaf' purists.\", \"A   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> sample of our fresh roasted whole bean Dark, Light, and Decaf in an elegant gift-worthy package. Includes       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> coffee master Wolfgang Klinker’s brewing guide for a perfect cup.\", \"Luciano Repetto has been steadfastly       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> roasting coffee from the same North Beach storefront that he took over from his father decades ago.\"            <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> &lt;/key_excerpts&gt;                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> --------------------------------------------------------------------------------                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[33m╭─\u001b[0m\u001b[33m───────────────────────────────────────────────\u001b[0m\u001b[33m 🔧 Tool Output \u001b[0m\u001b[33m────────────────────────────────────────────────\u001b[0m\u001b[33m─╮\u001b[0m\n",
       "\u001b[33m│\u001b[0m Search results:                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --- SOURCE 1: Andytown Coffee Roasters | San Francisco Specialty Coffee ---                                     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m URL: https://andytownsf.com/?srsltid=AfmBOopIbJM2AWmflHO9G7nXAgj2Hv7rQUna8jIX1A9fPmD5qXJn5h3g                   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m SUMMARY:                                                                                                        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m <summary>                                                                                                       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Andytown Coffee Roasters is offering a 'Happy Fogust' promotion featuring 20% off all 5lb bags of coffee for    \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m online purchases. Free shipping is automatically applied to orders of $50 or more. Their coffee lineup includes \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m several single-origin coffees and blends such as Peru Satipo Finca Tasta, Burundi Kayanza Incuti, Indonesia     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Natural East Java Mount Ijen, Short Strand Blend, Wind & Sea Blend, Cold Brew Blend, Shore Leave Hook Blend,    \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m and Decaf Guatemala Esquipulas. They emphasize sustainable practices as a certified California Green Business,  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m focusing on compostable packaging and ethical sourcing, support for local community hiring and events in San    \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Francisco, and high product quality through meticulous sourcing and small-batch roasting. The webpage also      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m highlights the fruit-forward natural coffee from the Ijen Highlands of East Java, Indonesia, where the volcanic \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m soil creates ideal coffee-growing conditions, with Kevenka Coffee as a key producer. Additional offerings       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m include brewing gear, merchandise, and a full café menu with coffee, pastries, and seasonal treats. Customers   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m can view menus and place orders online, and they can follow @ANDYTOWNSF on social media for monthly offers and  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m updates.                                                                                                        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m </summary>                                                                                                      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m <key_excerpts>                                                                                                  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m \"Happy Fogust! 20% off 5lb bags of coffee online only.\", \"FREE Shipping automatically applied to orders $50 and \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m over.\", \"Andytown is a certified California Green Business committed to sustainability through compostable      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m packaging, energy efficiency, and ethical sourcing.\", \"Andytown supports our community through local hiring,    \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m inclusive spaces, neighborhood events, and partnerships that uplift San Francisco’s diverse, creative spirit.\", \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m \"Andytown is dedicated to quality through meticulous sourcing, small-batch roasting, skilled baristas, and      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m crafting every cup with care and consistency.\"                                                                  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m </key_excerpts>                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --------------------------------------------------------------------------------                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --- SOURCE 2: GRAFFEO COFFEE ROASTING COMPANY - Updated ... ---                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m URL: https://www.yelp.com/biz/graffeo-coffee-roasting-company-san-francisco                                     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m SUMMARY:                                                                                                        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m This is the best coffee, freshly roasted, ground to your specificity, friendly customer service. And if not     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m local, they ship! Helpful                                                                                       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --------------------------------------------------------------------------------                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --- SOURCE 3: Graffeo Coffee ---                                                                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m URL: https://graffeo.com/?srsltid=AfmBOooR5Iosoe2hzeyTsbbZUiyGumR1Ei7BZMCSXI4gU-BV_xvwylFj                      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m SUMMARY:                                                                                                        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m <summary>                                                                                                       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Graffeo Coffee is a family-run artisan coffee roaster based in North Beach, operating since 1935 and committed  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m to producing what they consider the world's finest coffee. Their product lineup includes signature blends such  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m as Dark Roast, Light Roast, and Swiss Water Decaf — chemical-free decaffeinated coffee that maintains rich      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m flavor. The Dark Roast is smooth, rich, and full-bodied, offered at fine hotels and restaurants, while the      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Light Roast is a well-balanced coffee ideal for pour-over brewing. Their Gift Box offers a sampler of these     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m coffees with a brewing guide by coffee expert Wolfgang Klinker. The company prides itself on limited blends to  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m preserve quality and tradition, managed by Luciano Repetto, who continues roasting from the original North      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Beach storefront inherited from his father. Wholesale partnerships are available via direct contact. Graffeo    \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Coffee emphasizes both the art and science of roasting beans, maintaining a legacy passed through generations.  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m </summary>                                                                                                      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m <key_excerpts>                                                                                                  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m “To me Graffeo Coffee is rich, full and never bitter.”, \"Our signature Graffeo roast. Smooth, rich and          \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m full-bodied. Served at some of the world’s finest hotels and restaurants.\", \"Chemical free, Swiss water process \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m preserves the flavor of the beans when roasting that impresses even ardent 'death before decaf' purists.\", \"A   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m sample of our fresh roasted whole bean Dark, Light, and Decaf in an elegant gift-worthy package. Includes       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m coffee master Wolfgang Klinker’s brewing guide for a perfect cup.\", \"Luciano Repetto has been steadfastly       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m roasting coffee from the same North Beach storefront that he took over from his father decades ago.\"            \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m </key_excerpts>                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m --------------------------------------------------------------------------------                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╭───────────────────────────────────────────────────── 📝 AI ─────────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> 🔧 Tool Call: think_tool                                                                                        <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>    Args: {                                                                                                      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>   \"reflection\": \"Excellent! Now I have comprehensive information about the top coffee shops in San Francisco.   <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> Let me analyze what I've gathered:\\n\\n**Quality Assessment Summary:**\\n\\n**1. Graffeo Coffee Roasting           <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> Company**\\n- Highest Yelp rating: 4.7/5 stars (196 reviews)\\n- Family-run since 1935 - indicates consistent     <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> quality over time\\n- \\\"To me Graffeo Coffee is rich, full and never bitter\\\"\\n- Served at \\\"some of the world's <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> finest hotels and restaurants\\\"\\n- Traditional artisan roasting approach\\n- Swiss water decaf process           <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> (chemical-free)\\n\\n**2. Saint Frank Coffee**\\n- Strong ratings: 4.3 Yelp (996 reviews), 4.4 TripAdvisor\\n-      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> \\\"Relational Sourcing\\\" practices\\n- Multiple locations indicate success\\n- Specialty drinks and innovative     <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> offerings\\n\\n**3. Andytown Coffee Roasters**\\n- 4.5 stars with 1.1k reviews\\n- Certified California Green       <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> Business\\n- \\\"Meticulous sourcing, small-batch roasting, skilled baristas\\\"\\n- Single-origin coffees and        <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> specialized blends\\n- Sustainable and ethical sourcing practices\\n- West side favorite with Guatemalan          <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> espresso\\n\\n**4. Sextant Coffee Roasters**\\n- Direct trade with Ethiopian, Kenyan, and Colombian growers\\n-     <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> \\\"High-end but affordable beans\\\"\\n- Strong sourcing relationships\\n\\n**5. Paper Son**\\n- Described as          <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> \\\"crowning achievement\\\" \\n- \\\"Top-tier espresso and pour-over skills\\\"\\n- Innovative Asian American-influenced <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> drinks\\n\\nI now have enough information to provide a comprehensive, well-supported ranking based on coffee      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> quality indicators including ratings, sourcing practices, expert recognition, and customer feedback.\"           <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> }                                                                                                               <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>    ID: toolu_01EwGbBJXLSqZMgdELhu8F7J                                                                           <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[37m╭─\u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m 📝 AI \u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m─╮\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m 🔧 Tool Call: think_tool                                                                                        \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m    Args: {                                                                                                      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m   \"reflection\": \"Excellent! Now I have comprehensive information about the top coffee shops in San Francisco.   \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m Let me analyze what I've gathered:\\n\\n**Quality Assessment Summary:**\\n\\n**1. Graffeo Coffee Roasting           \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m Company**\\n- Highest Yelp rating: 4.7/5 stars (196 reviews)\\n- Family-run since 1935 - indicates consistent     \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m quality over time\\n- \\\"To me Graffeo Coffee is rich, full and never bitter\\\"\\n- Served at \\\"some of the world's \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m finest hotels and restaurants\\\"\\n- Traditional artisan roasting approach\\n- Swiss water decaf process           \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m (chemical-free)\\n\\n**2. Saint Frank Coffee**\\n- Strong ratings: 4.3 Yelp (996 reviews), 4.4 TripAdvisor\\n-      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m \\\"Relational Sourcing\\\" practices\\n- Multiple locations indicate success\\n- Specialty drinks and innovative     \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m offerings\\n\\n**3. Andytown Coffee Roasters**\\n- 4.5 stars with 1.1k reviews\\n- Certified California Green       \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m Business\\n- \\\"Meticulous sourcing, small-batch roasting, skilled baristas\\\"\\n- Single-origin coffees and        \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m specialized blends\\n- Sustainable and ethical sourcing practices\\n- West side favorite with Guatemalan          \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m espresso\\n\\n**4. Sextant Coffee Roasters**\\n- Direct trade with Ethiopian, Kenyan, and Colombian growers\\n-     \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m \\\"High-end but affordable beans\\\"\\n- Strong sourcing relationships\\n\\n**5. Paper Son**\\n- Described as          \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m \\\"crowning achievement\\\" \\n- \\\"Top-tier espresso and pour-over skills\\\"\\n- Innovative Asian American-influenced \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m drinks\\n\\nI now have enough information to provide a comprehensive, well-supported ranking based on coffee      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m quality indicators including ratings, sourcing practices, expert recognition, and customer feedback.\"           \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m }                                                                                                               \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m    ID: toolu_01EwGbBJXLSqZMgdELhu8F7J                                                                           \u001b[37m│\u001b[0m\n",
       "\u001b[37m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #808000; text-decoration-color: #808000\">╭──────────────────────────────────────────────── 🔧 Tool Output ─────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Reflection recorded: Excellent! Now I have comprehensive information about the top coffee shops in San          <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> Francisco. Let me analyze what I've gathered:                                                                   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> **Quality Assessment Summary:**                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> **1. Graffeo Coffee Roasting Company**                                                                          <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Highest Yelp rating: 4.7/5 stars (196 reviews)                                                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Family-run since 1935 - indicates consistent quality over time                                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - \"To me Graffeo Coffee is rich, full and never bitter\"                                                         <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Served at \"some of the world's finest hotels and restaurants\"                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Traditional artisan roasting approach                                                                         <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Swiss water decaf process (chemical-free)                                                                     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> **2. Saint Frank Coffee**                                                                                       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Strong ratings: 4.3 Yelp (996 reviews), 4.4 TripAdvisor                                                       <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - \"Relational Sourcing\" practices                                                                               <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Multiple locations indicate success                                                                           <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Specialty drinks and innovative offerings                                                                     <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> **3. Andytown Coffee Roasters**                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - 4.5 stars with 1.1k reviews                                                                                   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Certified California Green Business                                                                           <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - \"Meticulous sourcing, small-batch roasting, skilled baristas\"                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Single-origin coffees and specialized blends                                                                  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Sustainable and ethical sourcing practices                                                                    <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - West side favorite with Guatemalan espresso                                                                   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> **4. Sextant Coffee Roasters**                                                                                  <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Direct trade with Ethiopian, Kenyan, and Colombian growers                                                    <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - \"High-end but affordable beans\"                                                                               <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Strong sourcing relationships                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> **5. Paper Son**                                                                                                <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Described as \"crowning achievement\"                                                                           <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - \"Top-tier espresso and pour-over skills\"                                                                      <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> - Innovative Asian American-influenced drinks                                                                   <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span>                                                                                                                 <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> I now have enough information to provide a comprehensive, well-supported ranking based on coffee quality        <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">│</span> indicators including ratings, sourcing practices, expert recognition, and customer feedback.                    <span style=\"color: #808000; text-decoration-color: #808000\">│</span>\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[33m╭─\u001b[0m\u001b[33m───────────────────────────────────────────────\u001b[0m\u001b[33m 🔧 Tool Output \u001b[0m\u001b[33m────────────────────────────────────────────────\u001b[0m\u001b[33m─╮\u001b[0m\n",
       "\u001b[33m│\u001b[0m Reflection recorded: Excellent! Now I have comprehensive information about the top coffee shops in San          \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m Francisco. Let me analyze what I've gathered:                                                                   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m **Quality Assessment Summary:**                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m **1. Graffeo Coffee Roasting Company**                                                                          \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Highest Yelp rating: 4.7/5 stars (196 reviews)                                                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Family-run since 1935 - indicates consistent quality over time                                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - \"To me Graffeo Coffee is rich, full and never bitter\"                                                         \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Served at \"some of the world's finest hotels and restaurants\"                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Traditional artisan roasting approach                                                                         \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Swiss water decaf process (chemical-free)                                                                     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m **2. Saint Frank Coffee**                                                                                       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Strong ratings: 4.3 Yelp (996 reviews), 4.4 TripAdvisor                                                       \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - \"Relational Sourcing\" practices                                                                               \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Multiple locations indicate success                                                                           \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Specialty drinks and innovative offerings                                                                     \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m **3. Andytown Coffee Roasters**                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - 4.5 stars with 1.1k reviews                                                                                   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Certified California Green Business                                                                           \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - \"Meticulous sourcing, small-batch roasting, skilled baristas\"                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Single-origin coffees and specialized blends                                                                  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Sustainable and ethical sourcing practices                                                                    \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - West side favorite with Guatemalan espresso                                                                   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m **4. Sextant Coffee Roasters**                                                                                  \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Direct trade with Ethiopian, Kenyan, and Colombian growers                                                    \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - \"High-end but affordable beans\"                                                                               \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Strong sourcing relationships                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m **5. Paper Son**                                                                                                \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Described as \"crowning achievement\"                                                                           \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - \"Top-tier espresso and pour-over skills\"                                                                      \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m - Innovative Asian American-influenced drinks                                                                   \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m                                                                                                                 \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m I now have enough information to provide a comprehensive, well-supported ranking based on coffee quality        \u001b[33m│\u001b[0m\n",
       "\u001b[33m│\u001b[0m indicators including ratings, sourcing practices, expert recognition, and customer feedback.                    \u001b[33m│\u001b[0m\n",
       "\u001b[33m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╭───────────────────────────────────────────────────── 📝 AI ─────────────────────────────────────────────────────╮</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> Based on my research focusing specifically on coffee quality in San Francisco, I've identified and evaluated    <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> the top coffee shops using multiple quality indicators including customer ratings, expert recognition, sourcing <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> practices, and roasting methods. Here's my analysis:                                                            <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> ## Top San Francisco Coffee Shops Ranked by Coffee Quality                                                      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> ### **1. Graffeo Coffee Roasting Company**                                                                      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> **Quality Score: Highest**                                                                                      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Rating**: 4.7/5 stars (196 Yelp reviews) - highest rating found                                             <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Heritage**: Family-run artisan roaster since 1935, indicating consistent quality over 90 years              <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Industry Recognition**: Coffee served at \"some of the world's finest hotels and restaurants\"                <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Quality Characteristics**: Described as \"rich, full and never bitter\"                                       <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Processing**: Swiss water decaf process (chemical-free) showing attention to quality methods                <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Expertise**: Traditional roasting approach with generational knowledge passed down                          <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> ### **2. Andytown Coffee Roasters**                                                                             <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> **Quality Score: Very High**                                                                                    <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Rating**: 4.5/5 stars (1,100+ Yelp reviews)                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Quality Practices**: \"Meticulous sourcing, small-batch roasting, skilled baristas\"                          <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Certifications**: California Green Business certification indicating sustainable practices                  <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Sourcing**: Single-origin coffees and specialized blends with ethical sourcing                              <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Specialty**: Known for Guatemalan espresso and seasonal affogatos                                           <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Reputation**: Consistently mentioned as \"West side favorite\"                                                <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> ### **3. Saint Frank Coffee**                                                                                   <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> **Quality Score: Very High**                                                                                    <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Ratings**: 4.3/5 Yelp (996 reviews), 4.4/5 TripAdvisor (ranked #649 of 3,345 SF restaurants)                <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Industry Standing**: Described as \"to San Francisco coffee as Dungeness crab is to San Francisco            <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> restaurants\"                                                                                                    <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Sourcing**: \"Relational Sourcing\" practices indicating direct relationships with growers                    <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Growth**: Multiple locations and wholesale program suggest market validation of quality                     <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Innovation**: Known for Bolivian coffees and creative specialty drinks                                      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> ### **4. Sextant Coffee Roasters**                                                                              <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> **Quality Score: High**                                                                                         <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Sourcing Excellence**: Founder works directly with Ethiopian, Kenyan, and Colombian growers                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Value Proposition**: \"High-end but affordable beans\" - suggests quality without premium pricing             <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Direct Trade**: Strong relationships with coffee producers ensuring quality control                         <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Expert Recognition**: Mentioned consistently in quality-focused coffee discussions                          <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> ### **5. Paper Son**                                                                                            <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> **Quality Score: High**                                                                                         <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Expert Assessment**: Described as \"crowning achievement in the city's vast coffee game\"                     <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Technical Skills**: \"Top-tier espresso and pour-over skills\"                                                <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Innovation**: Merges Asian American heritage with coffee expertise                                          <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Specialties**: Known for espresso passionfruit tonic and innovative preparations                            <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> ### **6. Outset Coffee**                                                                                        <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> **Quality Score: High**                                                                                         <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Innovation**: Pioneers in fruit-infused coffee drinks                                                       <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Bean Quality**: Uses Ethiopian coffee in creative preparations                                              <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Expertise**: Complex preparations like Americano with orange juice, jasmine tea, and orange syrup           <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> - **Recognition**: Consistently mentioned for taking coffee \"to the next level\"                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> ## Key Quality Indicators Found:                                                                                <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> **Customer Ratings**: Graffeo leads with 4.7/5, followed by Andytown (4.5/5) and Saint Frank (4.3-4.4/5)        <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> **Sourcing Practices**: Multiple shops emphasize direct trade, ethical sourcing, and relationship-based         <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> purchasing                                                                                                      <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> **Industry Recognition**: Several shops serve premium hotels/restaurants or receive expert acclaim              <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> **Traditional vs. Innovation**: Mix of heritage roasters (Graffeo since 1935) and innovative newcomers          <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> **Technical Expertise**: Emphasis on skilled baristas, precise roasting, and specialized brewing methods        <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>                                                                                                                 <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> This ranking prioritizes coffee quality metrics including taste consistency, sourcing practices, roasting       <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span> expertise, and customer satisfaction specifically related to coffee rather than ambiance or service factors.    <span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">│</span>\n",
       "<span style=\"color: #c0c0c0; text-decoration-color: #c0c0c0\">╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[37m╭─\u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m 📝 AI \u001b[0m\u001b[37m────────────────────────────────────────────────────\u001b[0m\u001b[37m─╮\u001b[0m\n",
       "\u001b[37m│\u001b[0m Based on my research focusing specifically on coffee quality in San Francisco, I've identified and evaluated    \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m the top coffee shops using multiple quality indicators including customer ratings, expert recognition, sourcing \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m practices, and roasting methods. Here's my analysis:                                                            \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m ## Top San Francisco Coffee Shops Ranked by Coffee Quality                                                      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m ### **1. Graffeo Coffee Roasting Company**                                                                      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m **Quality Score: Highest**                                                                                      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Rating**: 4.7/5 stars (196 Yelp reviews) - highest rating found                                             \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Heritage**: Family-run artisan roaster since 1935, indicating consistent quality over 90 years              \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Industry Recognition**: Coffee served at \"some of the world's finest hotels and restaurants\"                \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Quality Characteristics**: Described as \"rich, full and never bitter\"                                       \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Processing**: Swiss water decaf process (chemical-free) showing attention to quality methods                \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Expertise**: Traditional roasting approach with generational knowledge passed down                          \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m ### **2. Andytown Coffee Roasters**                                                                             \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m **Quality Score: Very High**                                                                                    \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Rating**: 4.5/5 stars (1,100+ Yelp reviews)                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Quality Practices**: \"Meticulous sourcing, small-batch roasting, skilled baristas\"                          \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Certifications**: California Green Business certification indicating sustainable practices                  \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Sourcing**: Single-origin coffees and specialized blends with ethical sourcing                              \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Specialty**: Known for Guatemalan espresso and seasonal affogatos                                           \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Reputation**: Consistently mentioned as \"West side favorite\"                                                \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m ### **3. Saint Frank Coffee**                                                                                   \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m **Quality Score: Very High**                                                                                    \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Ratings**: 4.3/5 Yelp (996 reviews), 4.4/5 TripAdvisor (ranked #649 of 3,345 SF restaurants)                \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Industry Standing**: Described as \"to San Francisco coffee as Dungeness crab is to San Francisco            \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m restaurants\"                                                                                                    \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Sourcing**: \"Relational Sourcing\" practices indicating direct relationships with growers                    \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Growth**: Multiple locations and wholesale program suggest market validation of quality                     \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Innovation**: Known for Bolivian coffees and creative specialty drinks                                      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m ### **4. Sextant Coffee Roasters**                                                                              \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m **Quality Score: High**                                                                                         \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Sourcing Excellence**: Founder works directly with Ethiopian, Kenyan, and Colombian growers                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Value Proposition**: \"High-end but affordable beans\" - suggests quality without premium pricing             \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Direct Trade**: Strong relationships with coffee producers ensuring quality control                         \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Expert Recognition**: Mentioned consistently in quality-focused coffee discussions                          \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m ### **5. Paper Son**                                                                                            \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m **Quality Score: High**                                                                                         \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Expert Assessment**: Described as \"crowning achievement in the city's vast coffee game\"                     \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Technical Skills**: \"Top-tier espresso and pour-over skills\"                                                \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Innovation**: Merges Asian American heritage with coffee expertise                                          \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Specialties**: Known for espresso passionfruit tonic and innovative preparations                            \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m ### **6. Outset Coffee**                                                                                        \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m **Quality Score: High**                                                                                         \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Innovation**: Pioneers in fruit-infused coffee drinks                                                       \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Bean Quality**: Uses Ethiopian coffee in creative preparations                                              \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Expertise**: Complex preparations like Americano with orange juice, jasmine tea, and orange syrup           \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m - **Recognition**: Consistently mentioned for taking coffee \"to the next level\"                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m ## Key Quality Indicators Found:                                                                                \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m **Customer Ratings**: Graffeo leads with 4.7/5, followed by Andytown (4.5/5) and Saint Frank (4.3-4.4/5)        \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m **Sourcing Practices**: Multiple shops emphasize direct trade, ethical sourcing, and relationship-based         \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m purchasing                                                                                                      \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m **Industry Recognition**: Several shops serve premium hotels/restaurants or receive expert acclaim              \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m **Traditional vs. Innovation**: Mix of heritage roasters (Graffeo since 1935) and innovative newcomers          \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m **Technical Expertise**: Emphasis on skilled baristas, precise roasting, and specialized brewing methods        \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m                                                                                                                 \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m This ranking prioritizes coffee quality metrics including taste consistency, sourcing practices, roasting       \u001b[37m│\u001b[0m\n",
       "\u001b[37m│\u001b[0m expertise, and customer satisfaction specifically related to coffee rather than ambiance or service factors.    \u001b[37m│\u001b[0m\n",
       "\u001b[37m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Run the agent\n",
    "from utils import format_messages\n",
    "from langchain_core.messages import HumanMessage\n",
    "\n",
    "# Example brief\n",
    "research_brief = \"\"\"I want to identify and evaluate the coffee shops in San Francisco that are considered the best based specifically  \n",
    "on coffee quality. My research should focus on analyzing and comparing coffee shops within the San Francisco area, \n",
    "using coffee quality as the primary criterion. I am open regarding methods of assessing coffee quality (e.g.,      \n",
    "expert reviews, customer ratings, specialty coffee certifications), and there are no constraints on ambiance,      \n",
    "location, wifi, or food options unless they directly impact perceived coffee quality. Please prioritize primary    \n",
    "sources such as the official websites of coffee shops, reputable third-party coffee review organizations (like     \n",
    "Coffee Review or Specialty Coffee Association), and prominent review aggregators like Google or Yelp where direct  \n",
    "customer feedback about coffee quality can be found. The study should result in a well-supported list or ranking of\n",
    "the top coffee shops in San Francisco, emphasizing their coffee quality according to the latest available data as  \n",
    "of July 2025.\"\"\"\n",
    "\n",
    "result = researcher_agent.invoke({\"researcher_messages\": [HumanMessage(content=f\"{research_brief}.\")]})\n",
    "format_messages(result['researcher_messages'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">List of Queries and Tool Calls Made</span>                                                                                \n",
       "\n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> 1 </span>Query: best coffee shops San Francisco 2024 2025 coffee quality specialty coffee roasters reviews               \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> 2 </span>Query: San Francisco coffee shops specialty coffee association awards Coffee Review ratings Saint Frank Sextant \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\">   </span>Andytown                                                                                                        \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> 3 </span>Query: \"Saint Frank Coffee\" \"Sextant Coffee\" \"Andytown Coffee\" San Francisco coffee quality reviews roasting    \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\">   </span>awards beans sourcing                                                                                           \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> 4 </span>Query: Graffeo Coffee Roasting Company Andytown Coffee Sextant Coffee San Francisco customer reviews coffee     \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\">   </span>taste quality beans espresso                                                                                    \n",
       "\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">───────────────────────────────────────────────────────────────────────────────────────────────────────────────────</span>\n",
       "<span style=\"font-weight: bold\">Fully Comprehensive Findings</span>                                                                                       \n",
       "\n",
       "Best Coffee Roaster Near San Francisco, California:                                                                \n",
       "\n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>Graffeo Coffee Roasting Company. 4.7 (196 reviews)                                                              \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>Andytown Coffee Roasters. 4.5 (1.1k reviews)                                                                    \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\">   </span>[1]                                                                                                             \n",
       "\n",
       "San Francisco is globally renowned for its rich coffee culture, being the birthplace of influential coffee trends  \n",
       "and establishments such as Wrecking Ball Coffee, which introduced the \"waves of coffee\" terminology. The city has  \n",
       "embraced diverse coffee styles, notably Yemeni coffee promoted by figures like Mokhtar Alkhanshali of Port of Mokha\n",
       "and Delah Coffee House. Traditional coffee culture landmarks include the origin of Irish Coffee and early Italian  \n",
       "espresso influence. The latest list of the 16 best coffee shops in San Francisco reflects dynamic changes, with new\n",
       "additions like Caffe Trieste, the Coffee Movement at Side A, and Cafe Shoji replacing others. These shops are      \n",
       "celebrated for their expertly brewed coffee, unique beverages, and community-oriented atmospheres.                 \n",
       "\n",
       "Highlighted coffee shops include:                                                                                  \n",
       "\n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>Saint Frank Coffee: Known for its minimal aesthetic, high-quality Bolivian coffees, and expansion with new      \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\">   </span>locations including Juniper and SoMa.                                                                           \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>Outset Coffee: Innovators of fruit-infused coffee drinks like their Ethiopian coffee Americano with orange juice\n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\">   </span>and jasmine tea.                                                                                                \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>Scullery: Specialty coffee serving East Bay’s Mother Tongue Coffee, offering quality fare in the Tenderloin     \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\">   </span>area.                                                                                                           \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>Sextant Coffee Roasters: Emphasizes direct relationships with Ethiopian, Kenyan, and Colombian growers, with    \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\">   </span>notable expansion.                                                                                              \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>Telescope Coffee: Offers creative seasonal drinks and a unique atmosphere in SoMa.                              \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>Abanico Coffee Roasters: A Latino-owned Mission District shop with Latin American coffee influences.            \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>SPRO - Mission Dolores/Castro: Creative coffee concoctions including a Cold Fashioned cold brew cocktail.       \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>Grand Coffee: Established 11 years ago with a second location, serving Mission Street with specialty brews.     \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>Hey Neighbor Cafe: Bayview’s cozy shop famed for quality beans and a unique mascot, a co-owner's cat.           \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>Excelsior Coffee: A Black and brown-owned specialty coffee shop known for its strong roasts and chai.           \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>Andytown Coffee Roasters: West side favorite with Guatemalan espresso and seasonal affogatos.                   \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>Hi NRG: A pop-up with Hong Kong-inspired lattes and vibrant cultural energy.                                    \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>Paper Son: Merges Asian American heritage with coffee innovation; known for espresso passionfruit tonic.        \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>Shoji: A trendy SoMa venue offering both coffee and award-winning tea, with coffee from MAME roasters.          \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>Caffe Trieste: A historic North Beach landmark linked to cultural icons and dark, sweet espresso.               \n",
       "<span style=\"color: #808000; text-decoration-color: #808000; font-weight: bold\"> • </span>The Coffee Movement at Side A: Collaborative coffee and doughnut spot with a relaxed atmosphere.                \n",
       "\n",
       "\"San Francisco is and has been for many the world over the summit of coffee culture.\", \"It’s the birthplace of     \n",
       "Wrecking Ball Coffee, where Trish Rothgeb introduced the 'waves of coffee' terminology and changed the industry    \n",
       "forever.\", \"These 16 coffee shops keep the torch burning, making those great ascents into the future.\", \"Saint     \n",
       "Frank is to San Francisco coffee as Dungeness crab is to San Francisco restaurants.\", \"Outset on Valencia and New  \n",
       "Montgomery streets takes the form to the next level.\", \"Sextant founder Kinani Ahmed works directly with Ethiopian,\n",
       "Kenyan, and Colombian growers, making high-end but affordable beans to-go.\", \"Paper Son pop-up is a crowning       \n",
       "achievement in the city’s vast coffee game, merging his Asian American heritage with his top-tier espresso and     \n",
       "pour-over skills.\", \"Caffe Trieste is indeed one of the touchstones for Godfather fans... The coffee won’t blow    \n",
       "your mind; it’s dark as midnight and sweet as sin, as it’s been written.\"                                          \n",
       "[2]                                                                                                                \n",
       "\n",
       "Coffee Movement and St. Frank are my favs with Sightglass and Ritual being the more “chain” backup (read: you can  \n",
       "always find one of                                                                                                 \n",
       "[3]                                                                                                                \n",
       "\n",
       "Sightglass Coffee 4.0 (2.1k reviews) 1.9 mi $$ Good coffee, not great. This is a very busy coffee house, with      \n",
       "another counter on the second floor.                                                                               \n",
       "[4]                                                                                                                \n",
       "\n",
       "San Francisco is renowned globally as a pinnacle of coffee culture, being the birthplace of key innovations and    \n",
       "terminology such as the \"waves of coffee\" by Trish Rothgeb of Wrecking Ball Coffee. The city introduced Yemeni     \n",
       "coffee to the West Coast through notable cafes like Port of Mokha and Delah Coffee House. It is also historically  \n",
       "significant for the creation of the Irish Coffee and the popularization of Italian espresso culture in the U.S.,   \n",
       "along with the invention of vacuum-sealed coffee. This article highlights 16 of the best coffee shops currently    \n",
       "sustaining San Francisco's coffee legacy. Notable shops include Saint Frank Coffee, known for Bolivian coffee and  \n",
       "stylish service with multiple locations; Outset Coffee, specializing in innovative fruit coffee drinks; The        \n",
       "Scullery, offering East Bay's Mother Tongue coffee and quality toast in Tenderloin; Sextant Coffee Roasters, whose \n",
       "founder collaborates directly with growers and offers affordable high-end beans; Telescope Coffee in SoMa,         \n",
       "featuring unique seasonal drinks like honeycomb lattes and signature strawberry milk; Abanico Coffee Roasters in   \n",
       "the Mission with El Salvadoran influences and specialty drinks; SPRO with inventive mixed coffee cocktails and     \n",
       "multiple city locations; Grand Coffee with a new spacious location and quality Chemex brews; Hey Neighbor Cafe in  \n",
       "Bayview, popular for its toast and ties to local bakery Rize Up; Excelsior Coffee, a Black and brown-owned shop    \n",
       "providing strong but balanced roasts; Andytown Coffee Roasters, beloved on the west side with Guatemalan espresso  \n",
       "and signature affogatos; Hi NRG, a pop-up offering Hong Kong-inspired lattes; Paper Son, merging Asian American    \n",
       "heritage with innovative espresso drinks; Shoji, known for high-quality tea and coffee service by award-winning    \n",
       "baristas; Caffe Trieste, famed for its vintage coffee culture and ties to film history; and The Coffee Movement at \n",
       "Side A, combining coffee with doughnuts and soft serve in a relaxed setting. The list reflects recent updates with \n",
       "some shops removed and others added, demonstrating San Francisco's evolving but enduring coffee scene.             \n",
       "\"San Francisco is and has been for many the world over the summit of coffee culture.\", \"It’s the birthplace of     \n",
       "Wrecking Ball Coffee, where Trish Rothgeb introduced the 'waves of coffee' terminology and changed the industry    \n",
       "forever.\", \"Outset Americano is a medley of Ethiopian coffee plus not-from-concentrate orange juice, jasmine green \n",
       "tea, and orange syrup.\", \"Sextant founder Kinani Ahmed works directly with Ethiopian, Kenyan, and Colombian        \n",
       "growers, making high-end but affordable beans to-go.\", \"SPRO is known for its playful and inventive coffee drinks, \n",
       "including the Cold Fashioned, a cold brew mixed with orange bitters and gum syrup topped with a Luxardo cherry and \n",
       "flamed orange twist.\"                                                                                              \n",
       "[5]                                                                                                                \n",
       "\n",
       "Battle of SF Coffee 2025☕️🏆, This should be fun and a great way to try some new spots and see what the consensus  \n",
       "is in the city!, Here are the guidelines: 1. Check to see if your spot is in the thread first. Upvote your favorite\n",
       "coffee shops in the thread; 2. Comment your favorite SF coffee spots that have not been posted. If you have        \n",
       "thoughts on that spot drop it in that comment thread 🔑; 3. Upvote the other spots you like/Downvote the spots you \n",
       "think could be better., May the best coffee win! ☕️ 🏆                                                             \n",
       "[6]                                                                                                                \n",
       "\n",
       "Saint Frank Coffee is a coffee and tea shop located at 2340 Polk St, San Francisco, California. 4.3-star rating    \n",
       "based on 996 reviews. Open daily from 7:00 AM to 6:00 PM. Popular drinks include House Almond Macadamia Milk, Honey\n",
       "Lavender Latte, Orange Cream Latte, and various specialty lattes. The café offers take-out, takes reservations, has\n",
       "vegan options, and is wheelchair accessible. The vibe is hipster, trendy, casual, and good for working. Outdoor    \n",
       "seating is available.                                                                                              \n",
       "[7]                                                                                                                \n",
       "\n",
       "Saint Frank Coffee , San Francisco : See 68 unbiased reviews of Saint Frank Coffee , rated 4.4 of 5 on Tripadvisor \n",
       "and ranked #649 of 3,345 restaurants in San Francisco .                                                            \n",
       "[8]                                                                                                                \n",
       "\n",
       "Saint Frank Coffee is a San Francisco-based coffee company offering a variety of coffee products including single  \n",
       "origin, blends, and instant coffee. Their online store also includes merchandise, brewing gear, and gift           \n",
       "collections. The company emphasizes a concept called 'Relational Sourcing' and shares their story and values on    \n",
       "their website. Customers can subscribe to receive fresh coffee via a subscription service, with a promotion        \n",
       "offering a free bag of coffee for new subscribers. Saint Frank Coffee operates a physical location at 1604 17th    \n",
       "Street, San Francisco, CA 94107, and provides contact options through email and phone. They also have a wholesale  \n",
       "program and regularly update their customers through newsletters and a blog. The website offers accessibility      \n",
       "features such as screen-reader mode.                                                                               \n",
       "Sign up and we’ll send you fresh news and perspectives <span style=\"font-style: italic\">and</span> your first subscription bag free., Relational Sourcing, \n",
       "1604 17th Street, San Francisco, CA 94107, Wholesale program available through the website                         \n",
       "[9]                                                                                                                \n",
       "\n",
       "Andytown is a certified California Green Business committed to sustainability through compostable packaging, energy\n",
       "efficiency, and ethical sourcing. Andytown supports our community through local hiring, inclusive spaces,          \n",
       "neighborhood events, and partnerships that uplift San Francisco’s diverse, creative spirit. Andytown is dedicated  \n",
       "to quality through meticulous sourcing, small-batch roasting, skilled baristas, and crafting every cup with care   \n",
       "and consistency.                                                                                                   \n",
       "\"Happy Fogust! 20% off 5lb bags of coffee online only.\", \"FREE Shipping automatically applied to orders $50 and    \n",
       "over.\", \"Andytown is a certified California Green Business committed to sustainability through compostable         \n",
       "packaging, energy efficiency, and ethical sourcing.\", \"Andytown supports our community through local hiring,       \n",
       "inclusive spaces, neighborhood events, and partnerships that uplift San Francisco’s diverse, creative spirit.\",    \n",
       "\"Andytown is dedicated to quality through meticulous sourcing, small-batch roasting, skilled baristas, and crafting\n",
       "every cup with care and consistency.\"                                                                              \n",
       "[10]                                                                                                               \n",
       "\n",
       "Graffeo Coffee Roasting Company: \"This is the best coffee, freshly roasted, ground to your specificity, friendly   \n",
       "customer service. And if not local, they ship! Helpful\"                                                            \n",
       "[11]                                                                                                               \n",
       "\n",
       "Graffeo Coffee is a family-run artisan coffee roaster based in North Beach, operating since 1935 and committed to  \n",
       "producing what they consider the world's finest coffee. Their product lineup includes signature blends such as Dark\n",
       "Roast, Light Roast, and Swiss Water Decaf — chemical-free decaffeinated coffee that maintains rich flavor. The Dark\n",
       "Roast is smooth, rich, and full-bodied, offered at fine hotels and restaurants, while the Light Roast is a         \n",
       "well-balanced coffee ideal for pour-over brewing. Their Gift Box offers a sampler of these coffees with a brewing  \n",
       "guide by coffee expert Wolfgang Klinker. The company prides itself on limited blends to preserve quality and       \n",
       "tradition, managed by Luciano Repetto, who continues roasting from the original North Beach storefront inherited   \n",
       "from his father. Wholesale partnerships are available via direct contact. Graffeo Coffee emphasizes both the art   \n",
       "and science of roasting beans, maintaining a legacy passed through generations.                                    \n",
       "“To me Graffeo Coffee is rich, full and never bitter.”, \"Our signature Graffeo roast. Smooth, rich and full-bodied.\n",
       "Served at some of the world’s finest hotels and restaurants.\", \"Chemical free, Swiss water process preserves the   \n",
       "flavor of the beans when roasting that impresses even ardent 'death before decaf' purists.\", \"A sample of our fresh\n",
       "roasted whole bean Dark, Light, and Decaf in an elegant gift-worthy package. Includes coffee master Wolfgang       \n",
       "Klinker’s brewing guide for a perfect cup.\", \"Luciano Repetto has been steadfastly roasting coffee from the same   \n",
       "North Beach storefront that he took over from his father decades ago.\"                                             \n",
       "[12]                                                                                                               \n",
       "\n",
       "<span style=\"color: #808000; text-decoration-color: #808000\">───────────────────────────────────────────────────────────────────────────────────────────────────────────────────</span>\n",
       "<span style=\"font-weight: bold\">List of All Relevant Sources (with citations in the report)</span>                                                        \n",
       "\n",
       "[1] Best Coffee Roaster San Francisco, CA - Last Updated August 2025 - Yelp:                                       \n",
       "https://m.yelp.com/search?find_desc=Best+Coffee+Roaster&amp;find_loc=San+Francisco%2C+CA                               \n",
       "[2] The Absolute Best San Francisco Coffee Shops - Eater SF:                                                       \n",
       "https://sf.eater.com/maps/best-coffee-shops-san-francisco                                                          \n",
       "[3] Recently moved to San Francisco, looking for good coffee place ... - Reddit:                                   \n",
       "https://www.reddit.com/r/AskSF/comments/1di0g1l/recently_moved_to_san_francisco_looking_for_good/                  \n",
       "[4] TOP 10 BEST Coffee Houses in San Francisco, CA - Yelp:                                                         \n",
       "https://www.yelp.com/search?find_desc=Coffee+Houses&amp;find_loc=San+Francisco%2C+CA                                   \n",
       "[5] The Absolute Best San Francisco Coffee Shops - Eater SF:                                                       \n",
       "https://sf.eater.com/maps/best-coffee-shops-san-francisco                                                          \n",
       "[6] Battle of SF Coffee 2025☕ : r/sanfrancisco - Reddit:                                                          \n",
       "https://www.reddit.com/r/sanfrancisco/comments/1li7ro2/battle_of_sf_coffee_2025/                                   \n",
       "[7] Yelp SAINT FRANK COFFEE - Updated August 2025: https://www.yelp.com/biz/saint-frank-coffee-san-francisco-2     \n",
       "[8] Tripadvisor SAINT FRANK COFFEE, San Francisco:                                                                 \n",
       "https://www.tripadvisor.com/Restaurant_Review-g60713-d5209565-Reviews-Saint_Frank_Coffee-San_Francisco_California.h\n",
       "tml                                                                                                                \n",
       "[9] Saint Frank Coffee - San Francisco: https://www.saintfrankcoffee.com/                                          \n",
       "[10] Andytown Coffee Roasters | San Francisco Specialty Coffee:                                                    \n",
       "https://andytownsf.com/?srsltid=AfmBOopIbJM2AWmflHO9G7nXAgj2Hv7rQUna8jIX1A9fPmD5qXJn5h3g                           \n",
       "[11] GRAFFEO COFFEE ROASTING COMPANY - Updated ... - Yelp:                                                         \n",
       "https://www.yelp.com/biz/graffeo-coffee-roasting-company-san-francisco                                             \n",
       "[12] Graffeo Coffee: https://graffeo.com/?srsltid=AfmBOooR5Iosoe2hzeyTsbbZUiyGumR1Ei7BZMCSXI4gU-BV_xvwylFj         \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1mList of Queries and Tool Calls Made\u001b[0m                                                                                \n",
       "\n",
       "\u001b[1;33m 1 \u001b[0mQuery: best coffee shops San Francisco 2024 2025 coffee quality specialty coffee roasters reviews               \n",
       "\u001b[1;33m 2 \u001b[0mQuery: San Francisco coffee shops specialty coffee association awards Coffee Review ratings Saint Frank Sextant \n",
       "\u001b[1;33m   \u001b[0mAndytown                                                                                                        \n",
       "\u001b[1;33m 3 \u001b[0mQuery: \"Saint Frank Coffee\" \"Sextant Coffee\" \"Andytown Coffee\" San Francisco coffee quality reviews roasting    \n",
       "\u001b[1;33m   \u001b[0mawards beans sourcing                                                                                           \n",
       "\u001b[1;33m 4 \u001b[0mQuery: Graffeo Coffee Roasting Company Andytown Coffee Sextant Coffee San Francisco customer reviews coffee     \n",
       "\u001b[1;33m   \u001b[0mtaste quality beans espresso                                                                                    \n",
       "\n",
       "\u001b[33m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\n",
       "\u001b[1mFully Comprehensive Findings\u001b[0m                                                                                       \n",
       "\n",
       "Best Coffee Roaster Near San Francisco, California:                                                                \n",
       "\n",
       "\u001b[1;33m • \u001b[0mGraffeo Coffee Roasting Company. 4.7 (196 reviews)                                                              \n",
       "\u001b[1;33m • \u001b[0mAndytown Coffee Roasters. 4.5 (1.1k reviews)                                                                    \n",
       "\u001b[1;33m   \u001b[0m[1]                                                                                                             \n",
       "\n",
       "San Francisco is globally renowned for its rich coffee culture, being the birthplace of influential coffee trends  \n",
       "and establishments such as Wrecking Ball Coffee, which introduced the \"waves of coffee\" terminology. The city has  \n",
       "embraced diverse coffee styles, notably Yemeni coffee promoted by figures like Mokhtar Alkhanshali of Port of Mokha\n",
       "and Delah Coffee House. Traditional coffee culture landmarks include the origin of Irish Coffee and early Italian  \n",
       "espresso influence. The latest list of the 16 best coffee shops in San Francisco reflects dynamic changes, with new\n",
       "additions like Caffe Trieste, the Coffee Movement at Side A, and Cafe Shoji replacing others. These shops are      \n",
       "celebrated for their expertly brewed coffee, unique beverages, and community-oriented atmospheres.                 \n",
       "\n",
       "Highlighted coffee shops include:                                                                                  \n",
       "\n",
       "\u001b[1;33m • \u001b[0mSaint Frank Coffee: Known for its minimal aesthetic, high-quality Bolivian coffees, and expansion with new      \n",
       "\u001b[1;33m   \u001b[0mlocations including Juniper and SoMa.                                                                           \n",
       "\u001b[1;33m • \u001b[0mOutset Coffee: Innovators of fruit-infused coffee drinks like their Ethiopian coffee Americano with orange juice\n",
       "\u001b[1;33m   \u001b[0mand jasmine tea.                                                                                                \n",
       "\u001b[1;33m • \u001b[0mScullery: Specialty coffee serving East Bay’s Mother Tongue Coffee, offering quality fare in the Tenderloin     \n",
       "\u001b[1;33m   \u001b[0marea.                                                                                                           \n",
       "\u001b[1;33m • \u001b[0mSextant Coffee Roasters: Emphasizes direct relationships with Ethiopian, Kenyan, and Colombian growers, with    \n",
       "\u001b[1;33m   \u001b[0mnotable expansion.                                                                                              \n",
       "\u001b[1;33m • \u001b[0mTelescope Coffee: Offers creative seasonal drinks and a unique atmosphere in SoMa.                              \n",
       "\u001b[1;33m • \u001b[0mAbanico Coffee Roasters: A Latino-owned Mission District shop with Latin American coffee influences.            \n",
       "\u001b[1;33m • \u001b[0mSPRO - Mission Dolores/Castro: Creative coffee concoctions including a Cold Fashioned cold brew cocktail.       \n",
       "\u001b[1;33m • \u001b[0mGrand Coffee: Established 11 years ago with a second location, serving Mission Street with specialty brews.     \n",
       "\u001b[1;33m • \u001b[0mHey Neighbor Cafe: Bayview’s cozy shop famed for quality beans and a unique mascot, a co-owner's cat.           \n",
       "\u001b[1;33m • \u001b[0mExcelsior Coffee: A Black and brown-owned specialty coffee shop known for its strong roasts and chai.           \n",
       "\u001b[1;33m • \u001b[0mAndytown Coffee Roasters: West side favorite with Guatemalan espresso and seasonal affogatos.                   \n",
       "\u001b[1;33m • \u001b[0mHi NRG: A pop-up with Hong Kong-inspired lattes and vibrant cultural energy.                                    \n",
       "\u001b[1;33m • \u001b[0mPaper Son: Merges Asian American heritage with coffee innovation; known for espresso passionfruit tonic.        \n",
       "\u001b[1;33m • \u001b[0mShoji: A trendy SoMa venue offering both coffee and award-winning tea, with coffee from MAME roasters.          \n",
       "\u001b[1;33m • \u001b[0mCaffe Trieste: A historic North Beach landmark linked to cultural icons and dark, sweet espresso.               \n",
       "\u001b[1;33m • \u001b[0mThe Coffee Movement at Side A: Collaborative coffee and doughnut spot with a relaxed atmosphere.                \n",
       "\n",
       "\"San Francisco is and has been for many the world over the summit of coffee culture.\", \"It’s the birthplace of     \n",
       "Wrecking Ball Coffee, where Trish Rothgeb introduced the 'waves of coffee' terminology and changed the industry    \n",
       "forever.\", \"These 16 coffee shops keep the torch burning, making those great ascents into the future.\", \"Saint     \n",
       "Frank is to San Francisco coffee as Dungeness crab is to San Francisco restaurants.\", \"Outset on Valencia and New  \n",
       "Montgomery streets takes the form to the next level.\", \"Sextant founder Kinani Ahmed works directly with Ethiopian,\n",
       "Kenyan, and Colombian growers, making high-end but affordable beans to-go.\", \"Paper Son pop-up is a crowning       \n",
       "achievement in the city’s vast coffee game, merging his Asian American heritage with his top-tier espresso and     \n",
       "pour-over skills.\", \"Caffe Trieste is indeed one of the touchstones for Godfather fans... The coffee won’t blow    \n",
       "your mind; it’s dark as midnight and sweet as sin, as it’s been written.\"                                          \n",
       "[2]                                                                                                                \n",
       "\n",
       "Coffee Movement and St. Frank are my favs with Sightglass and Ritual being the more “chain” backup (read: you can  \n",
       "always find one of                                                                                                 \n",
       "[3]                                                                                                                \n",
       "\n",
       "Sightglass Coffee 4.0 (2.1k reviews) 1.9 mi $$ Good coffee, not great. This is a very busy coffee house, with      \n",
       "another counter on the second floor.                                                                               \n",
       "[4]                                                                                                                \n",
       "\n",
       "San Francisco is renowned globally as a pinnacle of coffee culture, being the birthplace of key innovations and    \n",
       "terminology such as the \"waves of coffee\" by Trish Rothgeb of Wrecking Ball Coffee. The city introduced Yemeni     \n",
       "coffee to the West Coast through notable cafes like Port of Mokha and Delah Coffee House. It is also historically  \n",
       "significant for the creation of the Irish Coffee and the popularization of Italian espresso culture in the U.S.,   \n",
       "along with the invention of vacuum-sealed coffee. This article highlights 16 of the best coffee shops currently    \n",
       "sustaining San Francisco's coffee legacy. Notable shops include Saint Frank Coffee, known for Bolivian coffee and  \n",
       "stylish service with multiple locations; Outset Coffee, specializing in innovative fruit coffee drinks; The        \n",
       "Scullery, offering East Bay's Mother Tongue coffee and quality toast in Tenderloin; Sextant Coffee Roasters, whose \n",
       "founder collaborates directly with growers and offers affordable high-end beans; Telescope Coffee in SoMa,         \n",
       "featuring unique seasonal drinks like honeycomb lattes and signature strawberry milk; Abanico Coffee Roasters in   \n",
       "the Mission with El Salvadoran influences and specialty drinks; SPRO with inventive mixed coffee cocktails and     \n",
       "multiple city locations; Grand Coffee with a new spacious location and quality Chemex brews; Hey Neighbor Cafe in  \n",
       "Bayview, popular for its toast and ties to local bakery Rize Up; Excelsior Coffee, a Black and brown-owned shop    \n",
       "providing strong but balanced roasts; Andytown Coffee Roasters, beloved on the west side with Guatemalan espresso  \n",
       "and signature affogatos; Hi NRG, a pop-up offering Hong Kong-inspired lattes; Paper Son, merging Asian American    \n",
       "heritage with innovative espresso drinks; Shoji, known for high-quality tea and coffee service by award-winning    \n",
       "baristas; Caffe Trieste, famed for its vintage coffee culture and ties to film history; and The Coffee Movement at \n",
       "Side A, combining coffee with doughnuts and soft serve in a relaxed setting. The list reflects recent updates with \n",
       "some shops removed and others added, demonstrating San Francisco's evolving but enduring coffee scene.             \n",
       "\"San Francisco is and has been for many the world over the summit of coffee culture.\", \"It’s the birthplace of     \n",
       "Wrecking Ball Coffee, where Trish Rothgeb introduced the 'waves of coffee' terminology and changed the industry    \n",
       "forever.\", \"Outset Americano is a medley of Ethiopian coffee plus not-from-concentrate orange juice, jasmine green \n",
       "tea, and orange syrup.\", \"Sextant founder Kinani Ahmed works directly with Ethiopian, Kenyan, and Colombian        \n",
       "growers, making high-end but affordable beans to-go.\", \"SPRO is known for its playful and inventive coffee drinks, \n",
       "including the Cold Fashioned, a cold brew mixed with orange bitters and gum syrup topped with a Luxardo cherry and \n",
       "flamed orange twist.\"                                                                                              \n",
       "[5]                                                                                                                \n",
       "\n",
       "Battle of SF Coffee 2025☕️🏆, This should be fun and a great way to try some new spots and see what the consensus  \n",
       "is in the city!, Here are the guidelines: 1. Check to see if your spot is in the thread first. Upvote your favorite\n",
       "coffee shops in the thread; 2. Comment your favorite SF coffee spots that have not been posted. If you have        \n",
       "thoughts on that spot drop it in that comment thread 🔑; 3. Upvote the other spots you like/Downvote the spots you \n",
       "think could be better., May the best coffee win! ☕️ 🏆                                                             \n",
       "[6]                                                                                                                \n",
       "\n",
       "Saint Frank Coffee is a coffee and tea shop located at 2340 Polk St, San Francisco, California. 4.3-star rating    \n",
       "based on 996 reviews. Open daily from 7:00 AM to 6:00 PM. Popular drinks include House Almond Macadamia Milk, Honey\n",
       "Lavender Latte, Orange Cream Latte, and various specialty lattes. The café offers take-out, takes reservations, has\n",
       "vegan options, and is wheelchair accessible. The vibe is hipster, trendy, casual, and good for working. Outdoor    \n",
       "seating is available.                                                                                              \n",
       "[7]                                                                                                                \n",
       "\n",
       "Saint Frank Coffee , San Francisco : See 68 unbiased reviews of Saint Frank Coffee , rated 4.4 of 5 on Tripadvisor \n",
       "and ranked #649 of 3,345 restaurants in San Francisco .                                                            \n",
       "[8]                                                                                                                \n",
       "\n",
       "Saint Frank Coffee is a San Francisco-based coffee company offering a variety of coffee products including single  \n",
       "origin, blends, and instant coffee. Their online store also includes merchandise, brewing gear, and gift           \n",
       "collections. The company emphasizes a concept called 'Relational Sourcing' and shares their story and values on    \n",
       "their website. Customers can subscribe to receive fresh coffee via a subscription service, with a promotion        \n",
       "offering a free bag of coffee for new subscribers. Saint Frank Coffee operates a physical location at 1604 17th    \n",
       "Street, San Francisco, CA 94107, and provides contact options through email and phone. They also have a wholesale  \n",
       "program and regularly update their customers through newsletters and a blog. The website offers accessibility      \n",
       "features such as screen-reader mode.                                                                               \n",
       "Sign up and we’ll send you fresh news and perspectives \u001b[3mand\u001b[0m your first subscription bag free., Relational Sourcing, \n",
       "1604 17th Street, San Francisco, CA 94107, Wholesale program available through the website                         \n",
       "[9]                                                                                                                \n",
       "\n",
       "Andytown is a certified California Green Business committed to sustainability through compostable packaging, energy\n",
       "efficiency, and ethical sourcing. Andytown supports our community through local hiring, inclusive spaces,          \n",
       "neighborhood events, and partnerships that uplift San Francisco’s diverse, creative spirit. Andytown is dedicated  \n",
       "to quality through meticulous sourcing, small-batch roasting, skilled baristas, and crafting every cup with care   \n",
       "and consistency.                                                                                                   \n",
       "\"Happy Fogust! 20% off 5lb bags of coffee online only.\", \"FREE Shipping automatically applied to orders $50 and    \n",
       "over.\", \"Andytown is a certified California Green Business committed to sustainability through compostable         \n",
       "packaging, energy efficiency, and ethical sourcing.\", \"Andytown supports our community through local hiring,       \n",
       "inclusive spaces, neighborhood events, and partnerships that uplift San Francisco’s diverse, creative spirit.\",    \n",
       "\"Andytown is dedicated to quality through meticulous sourcing, small-batch roasting, skilled baristas, and crafting\n",
       "every cup with care and consistency.\"                                                                              \n",
       "[10]                                                                                                               \n",
       "\n",
       "Graffeo Coffee Roasting Company: \"This is the best coffee, freshly roasted, ground to your specificity, friendly   \n",
       "customer service. And if not local, they ship! Helpful\"                                                            \n",
       "[11]                                                                                                               \n",
       "\n",
       "Graffeo Coffee is a family-run artisan coffee roaster based in North Beach, operating since 1935 and committed to  \n",
       "producing what they consider the world's finest coffee. Their product lineup includes signature blends such as Dark\n",
       "Roast, Light Roast, and Swiss Water Decaf — chemical-free decaffeinated coffee that maintains rich flavor. The Dark\n",
       "Roast is smooth, rich, and full-bodied, offered at fine hotels and restaurants, while the Light Roast is a         \n",
       "well-balanced coffee ideal for pour-over brewing. Their Gift Box offers a sampler of these coffees with a brewing  \n",
       "guide by coffee expert Wolfgang Klinker. The company prides itself on limited blends to preserve quality and       \n",
       "tradition, managed by Luciano Repetto, who continues roasting from the original North Beach storefront inherited   \n",
       "from his father. Wholesale partnerships are available via direct contact. Graffeo Coffee emphasizes both the art   \n",
       "and science of roasting beans, maintaining a legacy passed through generations.                                    \n",
       "“To me Graffeo Coffee is rich, full and never bitter.”, \"Our signature Graffeo roast. Smooth, rich and full-bodied.\n",
       "Served at some of the world’s finest hotels and restaurants.\", \"Chemical free, Swiss water process preserves the   \n",
       "flavor of the beans when roasting that impresses even ardent 'death before decaf' purists.\", \"A sample of our fresh\n",
       "roasted whole bean Dark, Light, and Decaf in an elegant gift-worthy package. Includes coffee master Wolfgang       \n",
       "Klinker’s brewing guide for a perfect cup.\", \"Luciano Repetto has been steadfastly roasting coffee from the same   \n",
       "North Beach storefront that he took over from his father decades ago.\"                                             \n",
       "[12]                                                                                                               \n",
       "\n",
       "\u001b[33m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\n",
       "\u001b[1mList of All Relevant Sources (with citations in the report)\u001b[0m                                                        \n",
       "\n",
       "[1] Best Coffee Roaster San Francisco, CA - Last Updated August 2025 - Yelp:                                       \n",
       "https://m.yelp.com/search?find_desc=Best+Coffee+Roaster&find_loc=San+Francisco%2C+CA                               \n",
       "[2] The Absolute Best San Francisco Coffee Shops - Eater SF:                                                       \n",
       "https://sf.eater.com/maps/best-coffee-shops-san-francisco                                                          \n",
       "[3] Recently moved to San Francisco, looking for good coffee place ... - Reddit:                                   \n",
       "https://www.reddit.com/r/AskSF/comments/1di0g1l/recently_moved_to_san_francisco_looking_for_good/                  \n",
       "[4] TOP 10 BEST Coffee Houses in San Francisco, CA - Yelp:                                                         \n",
       "https://www.yelp.com/search?find_desc=Coffee+Houses&find_loc=San+Francisco%2C+CA                                   \n",
       "[5] The Absolute Best San Francisco Coffee Shops - Eater SF:                                                       \n",
       "https://sf.eater.com/maps/best-coffee-shops-san-francisco                                                          \n",
       "[6] Battle of SF Coffee 2025☕ : r/sanfrancisco - Reddit:                                                          \n",
       "https://www.reddit.com/r/sanfrancisco/comments/1li7ro2/battle_of_sf_coffee_2025/                                   \n",
       "[7] Yelp SAINT FRANK COFFEE - Updated August 2025: https://www.yelp.com/biz/saint-frank-coffee-san-francisco-2     \n",
       "[8] Tripadvisor SAINT FRANK COFFEE, San Francisco:                                                                 \n",
       "https://www.tripadvisor.com/Restaurant_Review-g60713-d5209565-Reviews-Saint_Frank_Coffee-San_Francisco_California.h\n",
       "tml                                                                                                                \n",
       "[9] Saint Frank Coffee - San Francisco: https://www.saintfrankcoffee.com/                                          \n",
       "[10] Andytown Coffee Roasters | San Francisco Specialty Coffee:                                                    \n",
       "https://andytownsf.com/?srsltid=AfmBOopIbJM2AWmflHO9G7nXAgj2Hv7rQUna8jIX1A9fPmD5qXJn5h3g                           \n",
       "[11] GRAFFEO COFFEE ROASTING COMPANY - Updated ... - Yelp:                                                         \n",
       "https://www.yelp.com/biz/graffeo-coffee-roasting-company-san-francisco                                             \n",
       "[12] Graffeo Coffee: https://graffeo.com/?srsltid=AfmBOooR5Iosoe2hzeyTsbbZUiyGumR1Ei7BZMCSXI4gU-BV_xvwylFj         \n"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from rich.markdown import Markdown\n",
    "Markdown(result['compressed_research'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can see the trace [here](https://smith.langchain.com/public/30eebc0c-455e-4db7-9665-d367ebd40b4e/r).\n",
    "\n",
    "### LangGraph Studio\n",
    "\n",
    "Just as we did before, we can also use LangGraph Studio to visualize the agent. \n",
    "\n",
    "This agent has been added to the `langgraph.json` file, so you can select `research_agent` in the dropdown menu:\n",
    "\n",
    "```\n",
    "\"research_agent_mcp\": \"./src/deep_research_from_scratch/research_agent.py:agent\"\n",
    "```\n",
    "\n",
    "Run the following command to start the studio\n",
    "\n",
    "```bash\n",
    "uvx --refresh --from \"langgraph-cli[inmem]\" --with-editable . --python 3.11 langgraph dev --allow-blocking\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Eval"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Agents use a self-directed trajectory of tool calls to accomplish tasks.\n",
    "\n",
    "Let's think about the ramifications of a poorly tuned tool-calling loop: \n",
    "\n",
    "- Early Termination: The agent decides to stop calling tools when the task is not actually complete. \n",
    "- Prolonged Looping: The agent is never satisfied with the state of its information. \n",
    "\n",
    "The first failure  mode results in the agent collecting insufficient information. In the deep research context, the answer may end up being too shallow. The second failure mode results in the agent utilizing an excessive number of tokens. In the deep research context, irrelevant information may poison the result.\n",
    "\n",
    "We tuned our prompt to avoid these problems. But, let's se up a toy eval dataset that allows us to easily test agent decision-making."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain_core.messages import AIMessage, ToolMessage, HumanMessage\n",
    "\n",
    "# Scenario 1: Agent should CONTINUE - has insufficient/irrelevant information + think_tool realizes more research needed\n",
    "messages_should_continue = [\n",
    "    HumanMessage(content=\"What are the top coffee shops in San Francisco based on coffee quality?\"),\n",
    "    AIMessage(\n",
    "        content=\"I'll search for information about top coffee shops in San Francisco focusing on coffee quality.\",\n",
    "        tool_calls=[\n",
    "            {\n",
    "                \"name\": \"tavily_search\",\n",
    "                \"args\": {\n",
    "                    \"query\": \"coffee shops San Francisco popular locations\"\n",
    "                },\n",
    "                \"id\": \"call_continue_search_001\",\n",
    "                \"type\": \"tool_call\"\n",
    "            }\n",
    "        ]\n",
    "    ),\n",
    "    # Tavily Search provides generic cafe information - NOT focused on coffee quality\n",
    "    ToolMessage(\n",
    "        content=\"Search results show popular San Francisco cafes: Blue Bottle Coffee has great wifi and ambiance, Philz Coffee is known for custom blends and friendly service, Café Reveille has multiple locations with good pastries and laptop-friendly spaces. Ritual Coffee offers cozy seating and is popular with students.\",\n",
    "        tool_call_id=\"call_continue_search_001\",\n",
    "    ),\n",
    "    # Agent uses think_tool to reflect and realizes the search results are insufficient\n",
    "    AIMessage(\n",
    "        content=\"Let me use the think_tool to analyze these search results and determine next steps.\",\n",
    "        tool_calls=[\n",
    "            {\n",
    "                \"name\": \"think_tool\",\n",
    "                \"args\": {\n",
    "                    \"reflection\": \"Analysis of search results: The information I found focuses on general cafe features like wifi, ambiance, custom blends, and seating - but lacks specific coffee quality metrics. The user specifically asked for evaluation based on coffee quality, which would require expert reviews, professional ratings, specialty certifications, or quality-focused customer feedback. I need to search specifically for coffee quality assessments, Coffee Review scores, specialty coffee credentials, or expert evaluations of SF coffee shops. The current information is insufficient to answer the user's question about coffee quality.\"\n",
    "                },\n",
    "                \"id\": \"call_continue_think_001\",\n",
    "                \"type\": \"tool_call\"\n",
    "            }\n",
    "        ]\n",
    "    ),\n",
    "    # think_tool response identifies the gap and need for more targeted research\n",
    "    ToolMessage(\n",
    "        content=\"Reflection recorded: Analysis of search results: The information I found focuses on general cafe features like wifi, ambiance, custom blends, and seating - but lacks specific coffee quality metrics. The user specifically asked for evaluation based on coffee quality, which would require expert reviews, professional ratings, specialty certifications, or quality-focused customer feedback. I need to search specifically for coffee quality assessments, Coffee Review scores, specialty coffee credentials, or expert evaluations of SF coffee shops. The current information is insufficient to answer the user's question about coffee quality.\",\n",
    "        tool_call_id=\"call_continue_think_001\",\n",
    "    )\n",
    "]\n",
    "\n",
    "# Scenario 2: Agent should STOP - has comprehensive coffee quality information + think_tool reflection\n",
    "messages_should_stop = [\n",
    "    HumanMessage(content=\"What are the top coffee shops in San Francisco based on coffee quality?\"),\n",
    "    AIMessage(\n",
    "        content=\"I'll research San Francisco coffee shops specifically focusing on coffee quality assessments and expert reviews.\",\n",
    "        tool_calls=[\n",
    "            {\n",
    "                \"name\": \"tavily_search\",\n",
    "                \"args\": {\n",
    "                    \"query\": \"best coffee quality San Francisco specialty coffee expert reviews Coffee Review ratings 2024\"\n",
    "                },\n",
    "                \"id\": \"call_stop_search_001\", \n",
    "                \"type\": \"tool_call\"\n",
    "            }\n",
    "        ]\n",
    "    ),\n",
    "    # This ToolMessage provides COMPREHENSIVE coffee quality information - sufficient to answer the question\n",
    "    ToolMessage(\n",
    "        content=\"\"\"Coffee quality research for San Francisco reveals top establishments based on expert reviews and specialty coffee credentials:\n",
    "\n",
    "**Top Quality-Focused Coffee Shops:**\n",
    "1. **Sightglass Coffee** - Coffee Review score 94/100, known for single-origin beans and precise roasting techniques. Featured in Bon Appétit's \"Best Coffee in America\" list for exceptional coffee quality.\n",
    "\n",
    "2. **Saint Frank Coffee** - Ranked #3 coffee shop in America by The Daily Meal based on coffee quality. 4.3/5 Yelp rating with reviews specifically praising \"exceptional bean quality\" and \"perfect extraction.\"\n",
    "\n",
    "3. **Ritual Coffee Roasters** - Specialty Coffee Association member, direct trade relationships, consistently rated 4.4/5 on Google with reviews highlighting \"superior coffee taste\" and \"expert barista skills.\"\n",
    "\n",
    "4. **Blue Bottle Coffee** - Third-wave coffee pioneer, Coffee Review scores averaging 90+/100, known for rigorous quality control and fresh roasting practices.\n",
    "\n",
    "5. **Four Barrel Coffee** - Local roaster with Coffee Review scores 88-92/100, praised by industry experts for \"exceptional coffee quality\" and innovative brewing methods.\n",
    "\n",
    "**Quality Indicators Found:**\n",
    "- Coffee Review professional scores (88-94/100 range)\n",
    "- Specialty Coffee Association certifications\n",
    "- Direct trade/single-origin sourcing\n",
    "- Expert recognition from food publications\n",
    "- Customer reviews specifically mentioning coffee taste and quality\n",
    "\n",
    "This provides a comprehensive assessment of SF coffee shops based specifically on coffee quality rather than ambiance or service.\"\"\",\n",
    "        tool_call_id=\"call_stop_search_001\",\n",
    "    ),\n",
    "    # Agent now uses think_tool to reflect on the search results\n",
    "    AIMessage(\n",
    "        content=\"Let me reflect on the search results using the think_tool to assess whether I have sufficient information.\",\n",
    "        tool_calls=[\n",
    "            {\n",
    "                \"name\": \"think_tool\",\n",
    "                \"args\": {\n",
    "                    \"reflection\": \"Analysis of search results: I found comprehensive coffee quality information for SF coffee shops including: 1) Professional Coffee Review scores (88-94/100), 2) Expert rankings from reputable publications, 3) Specialty Coffee Association certifications, 4) Specific quality indicators (single-origin, roasting techniques, extraction methods), 5) Five top-rated establishments with detailed quality assessments. This covers all aspects requested: expert reviews, customer ratings, specialty certifications. I have enough information to provide a well-supported ranking based specifically on coffee quality. No additional searches needed - I should provide my comprehensive answer now.\"\n",
    "                },\n",
    "                \"id\": \"call_think_001\",\n",
    "                \"type\": \"tool_call\"\n",
    "            }\n",
    "        ]\n",
    "    ),\n",
    "    # think_tool response confirming reflection was recorded\n",
    "    ToolMessage(\n",
    "        content=\"Reflection recorded: Analysis of search results: I found comprehensive coffee quality information for SF coffee shops including: 1) Professional Coffee Review scores (88-94/100), 2) Expert rankings from reputable publications, 3) Specialty Coffee Association certifications, 4) Specific quality indicators (single-origin, roasting techniques, extraction methods), 5) Five top-rated establishments with detailed quality assessments. This covers all aspects requested: expert reviews, customer ratings, specialty certifications. I have enough information to provide a well-supported ranking based specifically on coffee quality. No additional searches needed - I should provide my comprehensive answer now.\",\n",
    "        tool_call_id=\"call_think_001\",\n",
    "    )\n",
    "]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We'll create a dataset here that has one example that should continue researching, and another example that should have all of the information necessary."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "from langsmith import Client\n",
    "\n",
    "langsmith_client = Client(api_key=os.getenv(\"LANGSMITH_API_KEY\"))\n",
    "\n",
    "# Create the dataset\n",
    "dataset_name = \"deep_research_agent_termination\"\n",
    "if not langsmith_client.has_dataset(dataset_name=dataset_name):\n",
    "\n",
    "    # Create the dataset\n",
    "    dataset = langsmith_client.create_dataset(\n",
    "        dataset_name=dataset_name,\n",
    "        description=\"A dataset that evaluates whether a researcher can accurately decide to continue calling tools, or to stop.\",\n",
    "    )\n",
    "    \n",
    "    # Create the examples\n",
    "    langsmith_client.create_examples(\n",
    "        dataset_id=dataset.id,\n",
    "        examples=[\n",
    "            {\n",
    "                \"inputs\": {\"researcher_messages\": messages_should_continue},\n",
    "                \"outputs\": {\"next_step\": \"continue\"},\n",
    "            },\n",
    "            {\n",
    "                \"inputs\": {\"researcher_messages\": messages_should_stop},\n",
    "                \"outputs\": {\"next_step\": \"stop\"},\n",
    "            },\n",
    "        ],\n",
    "    )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here, our evaluator is simple, using a hard-coded heuristic to check if the agent correctly continues or stops.\n",
    "\n",
    "We'll pass in the list of messages above.\n",
    "\n",
    "We'll assess the decision made by the agent: \n",
    "\n",
    "* `stop` - No tool calls means the agent should stop\n",
    "* `continue` - Tool calls means the agent should continue\n",
    "\n",
    "We'll then compare this decision to the reference expected decision `next_step`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "View the evaluation results for experiment: 'Researcher Iteration-4275b250' at:\n",
      "https://smith.langchain.com/o/ebbaf2eb-769b-4505-aca2-d11de10372a4/datasets/b98c329e-b7d0-4d5e-815b-809e67e20bd8/compare?selectedSessions=53d75183-c4d4-4895-8b9c-c24007846efc\n",
      "\n",
      "\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "44efc2580bb14e74ba40c69d5fb35840",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "0it [00:00, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<ExperimentResults Researcher Iteration-4275b250>"
      ],
      "text/plain": [
       "<ExperimentResults Researcher Iteration-4275b250>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import uuid\n",
    "\n",
    "def evaluate_next_step(outputs: dict, reference_outputs:dict):\n",
    "    tool_calls = outputs[\"researcher_messages\"][-1].tool_calls\n",
    "    made_tool_call = len(tool_calls) > 0\n",
    "    return {\n",
    "        \"key\": \"correct_next_step\",\n",
    "        \"score\": made_tool_call == (reference_outputs[\"next_step\"] == \"continue\")\n",
    "    }\n",
    "\n",
    "def target_func(inputs: dict):\n",
    "    config = {\"configurable\": {\"thread_id\": uuid.uuid4()}}\n",
    "    result = researcher_agent.nodes[\"llm_call\"].invoke(inputs, config=config)\n",
    "    return result\n",
    "\n",
    "langsmith_client.evaluate(\n",
    "    target_func,\n",
    "    data=dataset_name,\n",
    "    evaluators=[evaluate_next_step],\n",
    "    experiment_prefix=\"Researcher Iteration\",\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can see that in one example, the search tool doesn't return enough information, so we submit another search via tool call.\n",
    "\n",
    "In the other example, we get all three top restaurants back, and so we decide to conclude.\n",
    "\n",
    "One neat trick here - we were able to test a single node of our graph by calling `agent.nodes[\"node_name].invoke`"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
